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 /a
exibi-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 Settings
pasta seria criada na raiz da D:
unidade. Para evitar isso, use o /d
parâmetro:
cd /d C:\ProgramData\Microsoft\Windows\Start Menu\Programs\System
O cd
comando 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 cd
comando, mkdir
trate md
os espaços como delimitadores. Digamos que você execute este comando:
md Some settings
Neste caso, são criadas duas pastas: Some
e settings
. Se você pretende criar uma única pasta chamada Some settings
você 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 System
e Settings
geralmente 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