Eu estava construindo um conjunto de scripts em lote para o nosso sistema de compilação / teste automático que executa em diferentes sistemas operacionais para definir algumas condições para os diferentes ambientes e notei que o Windows 8 parece lidar com argumentos de linha de comando regedit.exe diferente do Windows XP até 7 .
Eu estava executando o comando:
regedit.exe /s relative_path\registry_settings.reg
Isso funcionou corretamente até chegarmos a um nó do Windows 8, ponto no qual ele não emitia nenhum erro, mas seguia em frente como se funcionasse sem fazer nenhuma alteração no registro. (e então toda a minha suíte de testes falhou e me assustou)
Para que o Windows 8 funcione, tive que usar um caminho absoluto como tal:
regedit.exe /s \absolute_path\registry_settings.reg
Esta é uma mudança deliberada da Microsoft ou é provável que exista uma configuração de ambiente que afete isso? Existe uma solução melhor do que usar um caminho absoluto (que é frágil e exigirá mais manutenção futura)?
fonte
Respostas:
Em um script em lote, você pode usar
%~dp0
para representar o diretório que contém o script em lote em execução. Então, se você tivesse arquivos nos seguintes locais:você poderia escrever isso em
script.bat
:e obtenha todos os benefícios de caminhos relativos e ainda funcione no Windows 8.
fonte