Solución

Solución

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 /amostrarlo 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 Settingscarpeta se crearía en la raíz de la D:unidad. Para evitar esto, use el /dparámetro:

cd /d C:\ProgramData\Microsoft\Windows\Start Menu\Programs\System

El cdcomando 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 mden su lugar:

md Settings

A diferencia del cdcomando, mkdirtrata mdlos espacios como delimitadores. Digamos que ejecuta este comando:

md Some settings

En este caso, se crean dos carpetas: Somey settings. Si tiene la intención de crear una única carpeta llamada, Some settingsdebe 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 Systemy Settingsnormalmente 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

información relacionada