批处理文件。如果变量包含字符串值,则转到更新密码

时间:2016-08-12 03:33:07

标签: batch-file

我希望有人可以为我揭开下面的内容。

我有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
)

提前感谢您提供任何帮助

1 个答案:

答案 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替换它。

希望它有所帮助。