2012-03-30 14 views
0

バッチファイルを書くのが初めてです。私は次のことをしようとしています。入れ子になったForループのバッチファイルエラー:今回は予期しなかったでした

スペースで区切られた2つのトークンを持つfileからlist.txtというファイルを1行ずつ読み込み、次のループでトークン化して、これらのトークンを別のスクリプトにパラメータとして送信しています。

FOR /F %%i IN (C:\list.txt) DO 

FOR /F "tokens=1,2 delims= " %%A IN (%%i) DO 
winscp.com /script=C:\myscript1.txt /parameter %%A C:\%%B 

ただし、次のエラーが発生しています。 Doは現時点では期待していませんでした。

私は何が欠けているか説明できる人がいます。

おかげ

答えて

1

別のオプションは、明示的にブロックを使用することです。また、FORコマンドにはデフォルト区切り文字としてスペースがありますので、delims= "は不要です。つまり:

FOR /F "tokens=1,2" %%A IN (C:\list.txt) DO (
    winscp.com /script=C:\myscript1.txt /parameter %%A C:\%%B 
) 
+0

完璧。ありがとう – javaMan

2

バッチファイルは、自由形式と空白の多くではありません重要です。このような場合は、1行にすべて書くことができますが、複数の行に渡って展開することはできません。ファイルを読み、あなたがそのFOR同じでトークンの分離を達成することができる独立し、すでに解決される問題の

FOR /F %%i IN (C:\list.txt) DO (
    FOR /F "tokens=1,2 delims= " %%A IN (%%i) DO (
    winscp.com /script=C:\myscript1.txt /parameter %%A C:\%%B 
) 
) 
+0

すべてを1行に入れてみました。それでも仕事はしませんでした – javaMan

+0

本当に試しましたか?私があなたに与えたコードはここで働きます。 – Joey

+0

こんにちはジョーイ、ごめんなさい。出来た。しかし、私は別のエラーになっています。私のファイルでは、 "good boy"という行が1行しかないので、2番目のforループ内のボディをecho %% Bに変更しました。私はコマンドのように認識されていない良いような何かを得ている – javaMan

関連する問題