Quantcast
Channel: Windows –…time is what you make of it…
Viewing all articles
Browse latest Browse all 10

Debug di uno script batch quando usato nel task scheduler.

$
0
0

Problema: ho creato un file batch che ogni tot ore svuota delle cartelle su un drive di rete mappato sotto Windows 2003 Server. Se mandato in run manualmente lo script esegue il compito in maniera egregia, se invece lo si avvia tramite task scheduler qualcosa fallisce.

Il log dello scheduler non è sufficiente a risolvere il mistero (il batch viene lanciato correttamente quindi il file è accessibile e l’utente di riferimento ha tutti i diritti per eseguirlo) ma l’azione non viene compiuta (le cartelle rimangono piene).

Come uscire dal problema?

Create un ulteriore file batch (debug.bat) da avviare tramite schedulazione e scrivete al suo interno queste istruzioni:

echo [%date% - %time%] Log start > C:\log.txt
CALL "C:\my_real_script.bat" >> C:\log.txt 2>&1

Sostituite my_real_script.bat con lo script che non vi funziona ed eseguite tramite schedulazione debug.bat

In log.txt avrete sia l’elenco delle azioni eseguite (lette in my_real_script.bat) che le eventuali risposte di errore da parte del sistema operativo. Il trucco sta in quel 2>&1 che redireziona l’output sul file.

E adesso, se volete sapere perché il mio script non andava, la risposta è semplice: Windows non ha accesso ai drive mappati quando esegue un’azione chiamata dallo scheduler (vi ricordo che lo script funziona benone se lanciato manualmente) e risponde con “The system cannot find the path specified.” in quanto il mapping dei drive viene effettuato solo per l’utente corrente.
Per risolvere il mio problema, nello script batch, ho dovuto usare la path UNC del tipo \\ip-address\folder_name.

Emanuele


Viewing all articles
Browse latest Browse all 10

Trending Articles