我正在尝试将令牌传递给批处理脚本中的子例程 -
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
?
答案 0 :(得分: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