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実際には、テキストファイルまたはコマンドを解析し、一度に1行全体を解析することを目的としています。これが生み出すものを見てください:

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

(つまり、ループを通過するたびに1行全体が読み取られ、実際に持っているトークンの数に応じて、、、、、、 ...に異なるトークンが割り当て%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 に答える