Estoy escribiendo un breve programa por lotes para mover algunos atajos.
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 es necesario dir /a
mostrarlo en una lista de directorio.
¿Qué necesito cambiar aquí? Los nombres/rutas de archivo son todos correctos ya que los copié 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
Respuesta1
Solución
El problema radica en la siguiente línea de código:
move "Default Programs.lnk" "C:\ProgramData\Microsoft\Windows\Start Menu\System\Settings"
Como señaló @Scott, la ruta de destino es incorrecta. En particular:
Start Menu\System
Esa parte debería decir:
Start Menu\Programs\System
Observaciones
Incluso si pudieras resolver el problema, hay otras cosas que vale la pena mencionar.
Cambiar la carpeta actual
cd C:\ProgramData\Microsoft\Windows\Start Menu\Programs\System
Los comandos anteriores no funcionarán como probablemente se esperaría en caso de que esté en una unidad que no sea C:
:
D:\>cd C:\ProgramData\Microsoft\Windows\Start Menu\Programs\System
D:\>mkdir Settings
En el ejemplo anterior, la Settings
carpeta se crearía en la raíz de la D:
unidad. Para evitar esto, use el /d
parámetro:
cd /d C:\ProgramData\Microsoft\Windows\Start Menu\Programs\System
El cd
comando no trata los espacios como delimitadores cuando las extensiones de comando están habilitadas (de forma predeterminada, lo están). De todos modos, es una buena idea utilizar comillas:
cd /d "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\System"
C:
Sin embargo, es posible que la carpeta no esté almacenada en el disco. En lugar de codificar la ruta completa, puede utilizar el%ProgramData%
Variable ambientalque se introdujo con Windows Vista:
cd /d "%programdata%\Microsoft\Windows\Start Menu\Programs\System"
En sistemas operativos anteriores, habría utilizado %AllUsersProfile%
en su lugar. Los nombres de las variables no distinguen entre mayúsculas y minúsculas.
Crear carpetas
mkdir Settings
Para ahorrar escritura, puede usar md
en su lugar:
md Settings
A diferencia del cd
comando, mkdir
trata md
los espacios como delimitadores. Digamos que ejecuta este comando:
md Some settings
En este caso, se crean dos carpetas: Some
y settings
. Si tiene la intención de crear una única carpeta llamada, Some settings
debe utilizar comillas. Para mantener la coherencia, recomiendo utilizar siempre comillas; incluso cuando no son obligatorios:
md "Settings"
También puede especificar una ruta completa, como esta:
md "%programdata%\Microsoft\Windows\Start Menu\Programs\System\Settings"
Las subcarpetas System
y Settings
normalmente no existen y ambas se crearían de una sola vez.
Otras lecturas
Respuesta2
Cita siempre los caminos. Las rutas con espacios en el nombre deben citarse.
utilizar esta :
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