我有批处理脚本,它使用for循环读取并执行在server.txt文件中提到的所有服务器上的command.txt中定义的命令。
问题是,我试图将输出/结果文件作为" server_command.log"对于每个执行的命令。
我可以轻松获取服务器详细信息但是对于命令,我需要从command.txt文件中获取最后一个单词,因为每个命令都有特殊字符,即/
command.txt内容:
show /system1/firmware1
show /system1/fan1
server.txt将具有目标服务器的IP地址:
10.1.1.101
10.1.1.103
10.1.1.105
我试图得到的输出文件应该是:
101.1.1.101_firmware1.log (file will contain fireware1 command output)
101.1.1.101_fan1.log (file will contain fan1 command output)
101.1.1.103_firmware1.log (file will contain fireware1 command output)
101.1.1.103_fan1.log (file will contain fan1 command output)
101.1.1.105_firmware1.log (file will contain fireware1 command output)
101.1.1.105_fan1.log (file will contain fan1 command output)
我的批处理文件:
for /f "tokens=1" %%a in (.\config\serverlist.txt) do (
echo _
echo ----- Opening connection to: %%a at %TIME% ----- >> %LOGFILE%
for /f "tokens=*" %%c in (.\config\commands.txt) do (
set MyCmd=%%c
set Server=%%a
echo --------- %%c and %%a ------------------
set MyLog=.\Logs\!Server!_%MyDate%.!MyCmd!.log
.\plink -ssh %username%@!Server! -pw %password% "!MyCmd!" >> !MyLog!
)
echo. >> %LOGFILE%
echo ----- Closing connection to: %%a at !TIME! ----- >> %LOGFILE%
)
由于
答案 0 :(得分:0)
用空格替换您的特殊符号(/
)并使用简单的for
来获取最后一个元素:
...
set MyCmd=%%c
for %%X in (!MyCmd:/^= !) do set MyCmd=%%X
echo !MyCmd!
...