Esta é uma solução para seu problema, embora não seja uma resposta para sua pergunta. Você deseja ver apenas as tarefas que foram executadas hoje e que tenham um status diferente de zero, certo?
No Windows 7, schtasks /query
informa as datas no formato n / n / nnnn (sem zeros à esquerda), enquanto o comando date
usa nn / nn / nnnn (com zeros à esquerda). Então, para obter a data de hoje no formato n / n / nnnn, eu faria
set today_temp1=/%date:~4% set today_temp2=%today_temp1:/0=/% set today=%today_temp2:~1%
Se schtasks
e date
forem compatíveis no XP, você poderá abrir mão do acima. Se você conhece uma maneira mais clara de tirar as datas iniciais dos zeros, por favor, me avise.
Em seguida, altere seu findstr
para findstr "TaskName Last"
, para que você obtenha TaskName, Last Run Time e Last Result. E mude seu Sub
para:
:Sub set Line=%* set BOL=%Line:~0,8% set MOL=%Line:~38% if /i "%BOL%"=="TaskName" ( set name=%MOL% goto :eof ) if /i "%BOL%"=="Last Run" ( REM Break date and time apart. call :Sub2 %MOL% goto :eof ) set result=%MOL% echo Task Name=%name%, Last Run=%lastrun%, Task Result=%result% if not %result%==0 ( if %lastrun%==%today% ( ︙ goto :eof :Sub2 set lastrun=%1 REM The Last Run time is %2. goto :eof