下面的脚本可以工作,但是在访问离线主机时会减慢很多。
@echo off
rem Setup the output file. This just wipes the pre-existing file from last set of data mining
for /f "tokens=2-4 delims=/ " %%a in ('date /t') do (set mydate=%%c-%%a-%%b)
for /f "tokens=1-2 delims=/:" %%a in ('time /t') do (set mytime=%%a%%b)
echo %mydate%_%mytime% > output\datamine.txt
**setlocal enabledelayedexpansion
for /f %%a in (hosts.txt) do (
psexec \\\%%a findstr /I ":" "C:\ProgramData\Firewall\event.log" >> output\datamine.txt )
endlocal**
我重写了一个 ping 语句,打算跳过不应答的主机。这是它的肉:
for /f %%a in (hosts.txt) do (<br>
ping -n 1 -w 100 %%a | for /f "skip=1 tokens=3 delims= " %%b in ('findstr bytes') do (set COMPNAME=%%b)
if errorlevel 1 goto FAIL
psexec \\%%a findstr /I ":" "C:\ProgramData\Firewall\event.log" >> output\datamine.txt )
goto END
:FAIL
echo host not answering
:END
endlocal
问题很明显,因为当主机无法回答 ping 时,我正在退出 do 循环。我需要脚本来查看错误级别 1,然后跳到下一个主机。不知道我应该在哪里结束循环。另外,我不太确定我选择的“goto”行。有什么建议吗?