Programa por lotes para mover el archivo de acceso directo

0

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
John
fuente
En sus comandos de "CD", las rutas se deben indicar porque contienen espacios.
BillP3rd
"Programas predeterminados" suena como un directorio, no un enlace. En el movimiento comando, pulse el Lengüeta tecla después de escribir 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 .)
AFH
1
Parece que tienes una copia & amp; pegar error: el move falta el comando Programs nivel de directorio entre Start Menu y System.
Scott

Respuestas:

2

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 lo señaló @Scott, la ruta de destino es incorrecta. En particular:

Start Menu\System

Esa parte debe leer:

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 esperaría en caso de que esté en una unidad que no esté C::

D:\>cd C:\ProgramData\Microsoft\Windows\Start Menu\Programs\System

D:\>mkdir Settings

En el ejemplo anterior, Settings carpeta se creará en la raíz de la D: conducir. Para evitar esto, use el /d parámetro:

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

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:

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

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:

cd /d "%programdata%\Microsoft\Windows\Start Menu\Programs\System"

En sistemas operativos anteriores habrías usado %AllUsersProfile% en lugar. Los nombres de variables no distinguen entre mayúsculas y minúsculas.

Crear carpetas

mkdir Settings

Para guardar la escritura puede utilizar md en lugar:

md Settings

A diferencia del cd mando, mkdir y md tratar los espacios como delimitadores. Digamos que ejecuta este comando:

md Some settings

En este caso, se crean dos carpetas: Some y settings. Si pretende crear una única carpeta llamada Some settings necesitas usar comillas. Por coherencia, recomiendo siempre usar citas; incluso cuando no son obligatorias:

md "Settings"

También puedes especificar una ruta completa, como esta:

md "%programdata%\Microsoft\Windows\Start Menu\Programs\System\Settings"

los System y Settings Las subcarpetas no suelen existir, y ambas se crearían de una sola vez.

Otras lecturas

and31415
fuente
1

Alwayse cita los caminos. Las rutas con espacio en el nombre deben ser citadas.

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
TheGoodUser
fuente
1
El problema real no está relacionado con las cotizaciones, en este caso. De forma predeterminada, los espacios no se tratan como delimitadores, por lo que podría omitir las comillas al usar el 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 el Default Programs.lnk archivo de acceso directo se mueve a una ruta que realmente no existe (la Start Menu\System parte debe ser Start Menu\Programs\System ).
and31415
@ and31415 Gracias querido amigo :)
TheGoodUser