Loops 批处理日志循环回显
我的批处理文件通过psexec停止和启动服务,并将结果记录到txt文件中。批处理按预期运行,但日志文件仅从psexec引用的文件中写入第一个令牌。如何确保日志与循环一起迭代Loops 批处理日志循环回显,loops,batch-file,logging,echo,psexec,Loops,Batch File,Logging,Echo,Psexec,我的批处理文件通过psexec停止和启动服务,并将结果记录到txt文件中。批处理按预期运行,但日志文件仅从psexec引用的文件中写入第一个令牌。如何确保日志与循环一起迭代 @echo off setlocal enabledelayedexpansion for /f %%a in (IP_LIST.txt) do call :action %%a :action psexec \\@IP_LIST.txt -u admin -p password cmd /c "net stop spoo
@echo off
setlocal enabledelayedexpansion
for /f %%a in (IP_LIST.txt) do call :action %%a
:action
psexec \\@IP_LIST.txt -u admin -p password cmd /c "net stop spooler && net start spooler && echo [%date%, %time%] - Restarted service on %1 && echo ===========================================" >> LOG.txt
以下是日志文件的外观:
文件
IP_LIST.txt
每行包含1个IP,没有附加数据。您需要将命令行参数与PSEXEC一起使用
@echo off
for /f %%a in (IP_LIST.txt) do call :action %%a
GOTO :EOF
:action
psexec \\%1 -u admin -p password cmd /c "net stop spooler && net start spooler && echo [%date%, %time%] - Restarted service on %1 && echo ===========================================" >> LOG.txt
如果不希望日志文件中有输出,请将输出从
NET.exe
重定向到NUL
设备。现有代码应将所有内容写入日志文件,因为您正在使用>
操作符附加到文件中。你应该在你的:action
标签前加上一个GOTO:EOF
,否则它会再次尝试执行。我想要输出,它只是没有给我想要的。它不会增加IP和时间,即使循环是通过针对net.exe推送的文件增加的。您的代码也没有意义。如果正在向ip列表文件馈送PSEXEC
,则无需使用for
命令。如果要将用于
命令,则psexec命令应如下所示:psexec\\\%1……
因此,基本上按照代码的设置方式,它将运行psexec n^2。如果文件中有10个ip地址。它将运行psexec 100次。
@echo off
for /f %%a in (IP_LIST.txt) do call :action %%a
GOTO :EOF
:action
psexec \\%1 -u admin -p password cmd /c "net stop spooler && net start spooler && echo [%date%, %time%] - Restarted service on %1 && echo ===========================================" >> LOG.txt