2

我正在尝试将令牌传递给批处理脚本中的子例程-

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

问题 - The system cannot find the file host1- 是错误信息不知道为什么。

%1是不是解决了host1

4

1 回答 1

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

(即每个循环读取一整行,并将不同的标记分配给%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
于 2012-04-17T19:19:53.150 回答