批处理脚本 - 为每个令牌调用子例程

liv*_*luv 2 dos batch-file

我试图将令牌传递给批处理脚本中的子程序 -

SET devices=host1 host2 host3
FOR /F "tokens=* delims=," %%G IN (%devices%) DO CALL :sendReq %%G

:sendReq

curl.exe http://%1:1234/service/monitor

GOTO :EOF
Run Code Online (Sandbox Code Playgroud)

问题 - The system cannot find the file host1- 错误信息不确定原因.

%1是不是要解决host1

Mat*_*Mat 8

for /f实际上是要解析文本文件或命令,并一次解析整行.看看它产生了什么:

SET devices=host1 host2 host3
FOR /F "tokens=*" %%G IN ("%devices%") DO call :sendReq %%G %%H %%I
goto :EOF

:sendReq
echo Parm1: %1
echo Parm2: %2
echo Parm3: %3
GOTO :EOF
Run Code Online (Sandbox Code Playgroud)

(即每经过循环读取一个整条生产线,并分配不同的令牌%G,然后%H,%I,%J,...这取决于你实际将有多少令牌有.)

你只需要更简单的版本for:

SET devices=host1 host2 host3
FOR %%G IN (%devices%) DO call :sendReq %%G
goto :EOF

:sendReq
echo In sendReq: %1
GOTO :EOF
Run Code Online (Sandbox Code Playgroud)