Próbuję uzyskać prostą wartość z pętli for /f
w pliku wsadowym.Dlaczego for/f nie ignoruje pustych linii?
Użycie polecenia wmic path win32_localtime get dayofweek
daje mi wynik:
C:\sendemail>wmic path win32_localtime get dayofweek
DayOfWeek
1
C:\sendemail>
Tak, stosując następujący skrypt wsadowy, powinienem być w stanie powrócić wyniku „1”:
set cmd=wmic path win32_localtime get dayofweek
for /f "tokens=1 skip=1" %%Z in ('%cmd%') do set _myday=%%Z
echo Var is %_myday%
Ale nie, ustawia zmienną co najmniej dwa razy, jak widać tutaj:
C:\sendemail>set cmd=wmic path win32_localtime get dayofweek
C:\sendemail>for /F "tokens=1 skip=1" %Z in ('wmic path win32_localtime get dayofweek') do set _myday=%Z
C:\sendemail>set _myday=1
:\sendemail>set _myday=
C:\sendemail>echo Var is
Var is
C:\sendemail>
Na początku zastanawiałem się dlaczego, wtedy uświadomiłem sobie, że pętla przetwarza dwie puste linie ... które nie powinny. zgodnie z tym: http://ss64.com/nt/for_cmd.html
Pomiń SKIP pominie przetwarzanie liczbę linii od początku pliku. SKIP zawiera puste wiersze, ale po ukończeniu SKIP, FOR/F ignoruje (nie wykonuje iteracji) puste wiersze.
Albo, nie działa normalnie, czy te linie nie są puste i są wypełnione czymś ...
W każdym razie, w jaki sposób mogę uzyskać tylko dzień tygodnia wyniku z tego i zignorować resztę?
tak, działa dobrze. Dziękuję. – Stese