我想创build一个batch file,首先我想运行循环清除事件日志。 然后运行一些不同的命令,如sfc / scannow或systeminfo。 但是如果我把这些命令放在for循环之前。 它在运行for循环之前停止。 如果在写入for循环之后放置这些命令,则在运行for循环后closurescmd。 有人可以提供正确的脚本来完成所有这些任务与一个单一的batch file。
例:
for /f %x in ('wevtutil el') do wevtutil cl "%x"
从您的批处理片段中,唯一真正的“意外后果”是前两个相关的IF语句之间缺less和号。 否则,下面运行在我的Windows 7和Windows 2008服务器上(我阉割了事件日志的实际清除):
FOR /F "tokens=1,2*" %%V IN ('bcdedit.exe') DO SET adminTest=%%V & IF (%adminTest%)==(Access) goto :noAdmin for /F "tokens=*" %%G in ('wevtutil.exe el') DO (call :do_clear "%%G") pause systeminfo.exe pause echo. goto :exit :do_clear @echo ============= echo clearing %1 wevtutil.exe gl %1 @echo ============= goto :eof :noAdmin :exit
调用未调用的批处理程序将退出并且不返回到第一批程序。 我不知道你的脚本可能会过早退出。
cls @ECHO OFF pause FOR /F "tokens=1,2*" %%V IN ('bcdedit') DO SET adminTest=%%V IF (%adminTest%)==(Access) goto noAdmin for /F "tokens=*" %%G in ('wevtutil.exe el') DO (call :do_clear "%%G") sfc /scannow Pause echo. echo goto theEnd :do_clear echo clearing %1 wevtutil.exe cl %1 goto :eof :noAdmin :EXIT