Estoy escribiendo un programa de lotes cortos para mover algunos accesos directos.
El problema es que Windows devuelve "No se puede encontrar el archivo especificado".
Me imagino que esto se debe a que se considera un archivo del sistema (piense que la cuenta de usuario controla el "sistema" de nivel pequeño) o que está oculto aunque no tenga que hacerlo. dir /a
para mostrarlo en un listado de directorios.
¿Qué necesito cambiar aquí? Los nombres / rutas de los archivos son correctos, ya que los he copiado directamente desde el Explorador de Windows.
cd C:\ProgramData\Microsoft\Windows\Start Menu\Programs\System
mkdir Settings
cd C:\ProgramData\Microsoft\Windows\Start Menu
dir
move "Default Programs.lnk" "C:\ProgramData\Microsoft\Windows\Start Menu\System\Settings"
pause
move Default
y ver a que se expande el nombre del archivo. Del mismo modo, utilice el Lengüeta clave para crear el directorio de destino, para asegurarse de que la ruta está escrita y citada correctamente, y para asegurarse de que todos los componentes de la ruta sean accesibles. (Como el peor mecanógrafo del mundo, hago uso frecuente de Lengüeta .)move
falta el comandoPrograms
nivel de directorio entreStart Menu
ySystem
.Respuestas:
Solución
El problema radica en la siguiente línea de código:
Como lo señaló @Scott, la ruta de destino es incorrecta. En particular:
Esa parte debe leer:
Observaciones
Incluso si pudieras resolver el problema, hay otras cosas que vale la pena mencionar.
Cambiar la carpeta actual
Los comandos anteriores no funcionarán como probablemente esperaría en caso de que esté en una unidad que no esté
C:
:En el ejemplo anterior,
Settings
carpeta se creará en la raíz de laD:
conducir. Para evitar esto, use el/d
parámetro:los
cd
el comando no trata los espacios como delimitadores cuando las extensiones de comando están habilitadas (de manera predeterminada, lo están). Es una buena idea usar citas de todos modos:La carpeta podría no estar almacenada en el
C:
conducir en todo, sin embargo. En lugar de codificar la ruta completa, puede usar la%ProgramData%
Variable ambiental el cual fue introducido con Windows Vista:En sistemas operativos anteriores habrías usado
%AllUsersProfile%
en lugar. Los nombres de variables no distinguen entre mayúsculas y minúsculas.Crear carpetas
Para guardar la escritura puede utilizar
md
en lugar:A diferencia del
cd
mando,mkdir
ymd
tratar los espacios como delimitadores. Digamos que ejecuta este comando:En este caso, se crean dos carpetas:
Some
ysettings
. Si pretende crear una única carpeta llamadaSome settings
necesitas usar comillas. Por coherencia, recomiendo siempre usar citas; incluso cuando no son obligatorias:También puedes especificar una ruta completa, como esta:
los
System
ySettings
Las subcarpetas no suelen existir, y ambas se crearían de una sola vez.Otras lecturas
fuente
Alwayse cita los caminos. Las rutas con espacio en el nombre deben ser citadas.
utilizar esta :
fuente
cd
comando (aunque yo no recomendaría hacerlo). Si tuviera que ejecutar los comandos anteriores, obtendría exactamente el mismo error descrito por el OP. ¿Por qué? Porque elDefault Programs.lnk
archivo de acceso directo se mueve a una ruta que realmente no existe (laStart Menu\System
parte debe serStart Menu\Programs\System
).