我希望有人可以为我揭开下面的内容。
我有4个帐号可以调用它们 ABC1,ABC2,ABC3,ABC4
我有60个远程机器,这个脚本将被执行,所以它们都通过serverlist.txt用命令拉出来。
For /f %%i in (C:\Temp\app\serverlist.txt) do ()
serverlist.txt包含类似
的主机名ABCSYDJ12345
ABCSYDJ12123
ABCMELJ12124
ABCBNEJ12133
现在当批处理文件读取serverlist.txt中的每一行时,我希望它检查主机名的前6个字符是否包含某个值,然后转到某个脚本。
示例:
For /f %%i in (C:\Temp\app\serverlist.txt) do (
IF %%i (FIRST 6 CHARCTERS)==ABCSYD GOTO Host1
IF %%i (FIRST 6 CHARCTERS)==ABCMEL GOTO Host2
::HOST1
Echo. Executing script on host 1 with username ABC1
::HOST2
Echo. Executing script on host 2 with username ABC2
)
提前感谢您提供任何帮助
答案 0 :(得分:0)
@echo off
setlocal EnableDelayedExpansion
for /F "tokens=*" %%A in (serverlist.txt) do (
set temp=%%A
echo !temp:~0,6!
IF "!temp:~0,6!"=="ABCSYD" call :host1
IF "!temp:~0,6!"=="ABCMEL" call :host2
)
pause
Goto :eof
:host1
Echo Executing script on host 1 with username ABC1
Goto :eof
:host2
Echo Executing script on host 2 with username ABC2
Goto :eof
我发现如果在for循环中使用GOTO,它仍然会忘记上下文。所以,我用CALL替换它。
希望它有所帮助。