O arquivo em lote retorna “dividir por zero erro” somente quando executado usando o Agendador de Tarefas

0

Eu tive um problema com um arquivo em lote que retornou "Dividir por zero erro" se, e apenas se, ele foi executado usando o Agendador de Tarefas. Se executado manualmente, ele se comportou como esperado.

Eu consegui refinar o problema no seguinte trecho de código, que retornou 0 quando executado no Agendador de Tarefas e causou a divisão por zero.

SET numfiles=0
FOR %%x in (*.jpg) DO SET /a numfiles+=1

SET /a rand=%RANDOM% %%numfiles%
SET /a selected=%rand%+1
Depois de uma hora arrancando meu cabelo, encontrei uma solução que, embora lógica, certamente não foi a primeira coisa em que pensei. Portanto, estou compartilhando minha solução:

    
por Marcel 27.12.2016 / 03:42

1 resposta

1

O problema é que o Agendador de Tarefas não executa arquivos em lote de seus próprios diretórios, mas do System32. Assim, o problema é facilmente resolvido adicionando

cd [relevant path]

para o início do script.

Espero que tenha conseguido salvar alguém de ter que passar pelos mesmos passos frustrantes.

    
por 27.12.2016 / 03:42