Problema de script da linha de comando

2

Estou trabalhando em um script batchfile há algumas semanas que deve automatizar determinadas tarefas de rotina que preciso executar durante meu trabalho. No entanto, me deparei com um problema que ainda não consegui descobrir.

Estou usando um dispositivo USB que carrega o script e alguns outros softwares (.exe). O script requer que você o execute no modo de administrador para que ele possa acessar certos serviços como o Serviço de Tempo do Windows ou o serviço Windows Update ...

Agora notei que quando você executa o script no modo de administrador, o diretório inicial é C: \ Windows \ System32

Durante este script, desejo executar um programa que também esteja no bastão. No entanto, não encontra este programa. Eu poderia escrever o caminho para o local exato no bastão. Mas isso não funcionará porque o stick é usado em computadores diferentes e a letra da unidade nem sempre corresponde.

Para encurtar a história, estou procurando uma maneira de executar um arquivo em lote (localizado em um dispositivo USB) no modo de administrador e fazer com que esse script execute um programa (também no dispositivo USB) automaticamente.

Obrigado antecipadamente! Dempsey

PS: Se possível alguém poderia explicar como eu posso fazer o script registrar tudo em um arquivo de texto? Tenha em mente que o script tem muitos comandos nele. Seria bom ter toda a saída registrada em um arquivo de texto e salva no mesmo dispositivo USB.

    
por Dempsey FoxDie Van Assche 04.01.2014 / 11:31

1 resposta

3

Adicione estas linhas ao topo do seu script:

@setlocal enableextensions
@cd /d "%~dp0"

A primeira linha ativa as variáveis ambientais e a segunda linha é uma variável especial que se refere ao diretório atual do script que está sendo lançado.

Aqui está uma boa descrição do usuário wilx nesta resposta :

cd    -- This is change directory command.
/d    -- This switch makes cd change both drive and directory at once. Without it you would have to do cd %~d0 & cd %~p0.
%~dp0 -- This can be dissected further into three parts:
%0    -- This represents zeroth parameter of your batch script. It expands into the name of the batch file itself.
%~0   -- The ~ there strips double quotes (") around the expanded argument.
%dp0  -- The d and p there are modifiers of the expansion. The d forces addition of a drive letter and the p adds full path.
    
por 04.01.2014 / 11:35