Tuve un problema con un archivo por lotes que devolvió "Divide by zero error" si, y solo si, se ejecutó usando el Programador de tareas. Si se ejecuta manualmente, se comportó como se esperaba.
Me las arreglé para reducir el problema al siguiente fragmento de código, que devolvió 0 cuando se ejecutó desde el Programador de tareas, y luego causó la división por cero.
SET numfiles=0
FOR %%x in (*.jpg) DO SET /a numfiles+=1
SET /a rand=%RANDOM% %%numfiles%
SET /a selected=%rand%+1
Después de una hora de arrancarme el cabello, encontré una solución que, aunque lógica, ciertamente no fue lo primero en lo que pensé. Por lo tanto, estoy compartiendo mi solución:
Respuestas:
El problema resultó ser que el Programador de tareas no ejecuta archivos por lotes desde sus propios directorios, sino desde System32. Por lo tanto, el problema se resuelve fácilmente agregando
al comienzo del guión.
Con suerte, logré salvar a alguien más de tener que seguir los mismos pasos frustrantes.
fuente