Batch w schedulerze działa inaczej niż w CLI


(drunkula) #1

Czołem,
 mam krótki batch file, który ma logować co minutę ilość wolnego miejsca, wrzucony do schedulera w Windows 2008:

fsutil volume diskfree c: |find "of ava" > free.txt

set /p fs= < free.txt

del free.txt

echo %date% %time% %fs% >> FFSL_%computername%.csv

Niestety, wywołany ze schedulera nie zapisuje wszystkich wartości:
2016-09-30  9:48:22,17  

wykonany w command line działa ładnie:
2016-09-30  9:48:50,37 Total # of avail free bytes  : 68919975936 

 

Można prościej, ale :

echo %date% %time% & fsutil volume diskfree c: |find "of ava" >> FFSL_%computername%.csv

zwraca mi wynik w dwóch liniach, a to utrudnia potem analizę, stąd ten plik tymczasowy.

 

Jakieś pomysły co tu się może knocić? Okno i tak się nie wyświetla, więc dodanie pause na końcu nie pokaże w którym miejscu jest coś nie tak.


(Fizyda) #2

Nie będę ukrywał, zgaduje. Może brak uprawnień?


(drunkula) #3

Dzięki za sugestię - uprawnienia są, bo logowana jest data i czas, tylko ta definiowana zmienna się gubi.

Wykonanie komendy z fajką ( | ) jest ok, bo do pliku free.txt dane się zapisują.

Wygląda na to, że scheduler nie przypisuje zmiennej %fs%…

 

Wprowadziłem w międzyczasie dwie zmiany w ustawieniach schedulera:

  1. uruchomienie z maksymalnymi uprawnieniami

  2. usunąłem cytaty z pola parametrów wywołania 

Voila! Działa!