Solução

Solução

Estou escrevendo um pequeno programa em lote para mover alguns atalhos.

O problema é que o Windows retorna “Não é possível encontrar o arquivo especificado”.

Imagino que seja porque ele é considerado um arquivo de sistema (pense que a conta do usuário controla o "sistema" de nível mesquinho) ou está oculto, mesmo que você não precise dir /aexibi-lo em uma listagem de diretório.

O que preciso mudar aqui? Os nomes/caminhos dos arquivos estão todos corretos, pois os copiei diretamente do Windows Explorer.

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

Responder1

Solução

O problema está na seguinte linha de código:

move "Default Programs.lnk" "C:\ProgramData\Microsoft\Windows\Start Menu\System\Settings"

Conforme apontado por @Scott, o caminho de destino está errado. Em particular:

Start Menu\System

Essa parte deve ser:

Start Menu\Programs\System

Observações

Mesmo que você tenha conseguido resolver o problema, há outras coisas que vale a pena mencionar.

Alterar a pasta atual

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

Os comandos acima não funcionariam como você provavelmente espera caso você esteja em uma unidade que não seja C::

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

D:\>mkdir Settings

No exemplo acima, a Settingspasta seria criada na raiz da D:unidade. Para evitar isso, use o /dparâmetro:

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

O cdcomando não trata espaços como delimitadores quando as extensões de comando estão habilitadas (por padrão, elas estão). De qualquer forma, é uma boa ideia usar aspas:

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

A pasta pode não estar armazenada na C:unidade. Em vez de codificar o caminho completo, você pode usar o%ProgramData% variável de ambienteque foi introduzido com o Windows Vista:

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

Em sistemas operacionais anteriores, você teria usado %AllUsersProfile%. Os nomes das variáveis ​​não diferenciam maiúsculas de minúsculas.

Crie pastas

mkdir Settings

Para economizar digitação, você pode usar md:

md Settings

Ao contrário do cdcomando, mkdirtrate mdos espaços como delimitadores. Digamos que você execute este comando:

md Some settings

Neste caso, são criadas duas pastas: Somee settings. Se você pretende criar uma única pasta chamada Some settingsvocê precisa usar aspas. Para maior consistência, recomendo sempre usar aspas; mesmo quando não são obrigatórios:

md "Settings"

Você também pode especificar um caminho completo, assim:

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

As subpastas Systeme Settingsgeralmente não existem e ambas seriam criadas de uma só vez.

Leitura adicional

Responder2

Sempre cite os caminhos. caminhos com espaço no nome devem estar entre aspas.

usa isto :

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

informação relacionada