Programa em lote para mover o arquivo de atalho

0

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

O problema é que o Windows retorna, "Não foi possível encontrar o arquivo especificado".

Eu imagino que isso seja porque ou é considerado um arquivo de sistema (acho que a conta de usuário controla o "sistema" de nível pequeno) ou que está oculto mesmo que você não precise dir /a para exibi-lo em uma listagem de diretório.

O que eu preciso mudar aqui? Os nomes / caminhos dos arquivos estão corretos, já que 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
    
por John 03.07.2014 / 16:17

2 respostas

2

Solução

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

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

Como apontado pelo @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 resolvido 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 é C: :

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

D:\>mkdir Settings

No exemplo acima, a pasta Settings seria criada na raiz da unidade D: . Para evitar isso, use o parâmetro /d :

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

O comando cd não trata os espaços de um delimitador quando as extensões de comando estão ativadas (por padrão, elas são). É uma boa ideia usar aspas de qualquer maneira:

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

A pasta pode não estar armazenada na unidade C: , no entanto. Em vez de codificar totalmente o caminho completo, você pode usar a variável de ambiente %ProgramData% que foi introduzida no 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 salvar a digitação, você pode usar md :

md Settings

Diferente do comando cd , mkdir e md tratam espaços como delimitadores. Digamos que você execute este comando:

md Some settings

Nesse caso, duas pastas são criadas: Some e settings . Se você pretende criar uma única pasta chamada Some settings , é necessário usar aspas. Para consistência, recomendo sempre usar aspas; mesmo quando não são obrigatórios:

md "Settings"

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

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

As subpastas System e Settings normalmente não existem e ambas seriam criadas de uma só vez.

Leitura adicional

por 04.07.2014 / 16:58
1

Alwayse cita os caminhos. caminhos com espaço no nome devem ser citados.

use isso:

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
    
por 03.07.2014 / 17:14

Tags