Problema de script da linha de comando

0

Estou trabalhando em um script batchfile há algumas semanas que deve automatizar certas tarefas de rotina que preciso executar durante o 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 de 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:21

2 respostas

0

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 - Este é o comando de alteração de diretório. / d - Esta opção faz com que o cd altere a unidade e o diretório de uma só vez. Sem isso você teria que fazer cd% ~ d0 & cd% ~ p0. % ~ dp0 - Isso pode ser dissecado em três partes: % 0 - Isto representa o parâmetro zeroth do seu script em lote. Ele se expande para o nome do arquivo em lote. % ~ 0 - O ~ lá separa aspas duplas (") ao redor do argumento expandido. % dp0 - O d e p existem modificadores da expansão. O d força a adição de uma letra de unidade e o p adiciona o caminho completo.

    
por 04.01.2014 / 12:03
0

Para registrar os detalhes do seu arquivo de lote, use o operador ">". Por exemplo, se o nome do arquivo em lote for abc.bat e o arquivo de log desejado for log.txt. Em seguida, tente como indicado abaixo:

abc.bat > log.txt

Isso criará um novo arquivo de log chamado log.txt no mesmo diretório em que o lote é executado.

    
por 04.01.2014 / 13:04