2012-06-15 10 views
7

Googleと同じような問題を見つけるためにgoogleの世界でうまく検索できましたが、FOR/Fのループと私は新しいスレッドを作成するに辞任しているので。DOS FOR/Fのループが実行されていないもの

私はRuby Gemを参照ファイルで見つけた行ごとに1回ずつ実行するためにFOR/Fループを使用しています。これは完全に行います。問題は、参照ファイルをスクロールしてRuby Gemを正しい時間実行したときに、FOR/Fループの外にある.CMDファイルの中で何も完了しないことです。

は、ここに私の.CMDコードです:

FOR /F "tokens=1,2,3 delims=," %%a in (c:\cygwin\usr\work\easy.lst) do (
c:\ruby191\bin\scrapitalist website -u http://www.website.com/%%a/%%c/%%b.html -o  C:\cygwin\usr\autobets\work\%%b_%%c.easy 
) 
copy c:\cygwin\usr\work\*.easy c:\cygwin\usr\autobets\work\easy.imp 

easy.lstファイルは、その中のデータの2つのラインを持っています。

Ruby Gemを実行して* .easyファイルを出力として作成すると、ループは正常に動作しますが、COPYコマンドは決して実行されません。コピーをECHOまたは実際には何かに置き換えることはできますが、実行されません。

私のFOR/F構文には何が欠けているのか分かりません。

おかげ

+1

UNIXスタイルのシェルをお勧めしますか?構文ははるかに強力で、たくさんのサワーです。 cygwinが既にインストールされているようですが、それに付随するbashシェルを使用しないのはなぜですか? – tdammers

+0

@tdammersそれは公正な提案ですが、それは理由が何であれ、OPがアセンブリを望むときにC#でコーディングを提案するのと同じです。 –

答えて

10

私はscrapitalistは、したがって、それはバッチファイルを停止しますが、FORループがキャッシュされているように、それが最後に動作し、バッチファイルそのものであると仮定します。

これを解決するには、接頭辞としてcallが1つだけ必要です。

FOR /F "tokens=1,2,3 delims=," %%a in (c:\cygwin\usr\work\easy.lst) do (
    call c:\ruby191\bin\scrapitalist website -u http://www.website.com/%%a/%%c/%%b.html -o  C:\cygwin\usr\autobets\work\%%b_%%c.easy 
) 
copy c:\cygwin\usr\work\*.easy c:\cygwin\usr\autobets\work\easy.imp 
+0

jeb - あなたは本当に正しいです、これで問題は解決しました。迷惑なことに、私は 'Call'コマンドで試していたので、その時点で構文エラーが発生しているに違いありません。 Grrrr!どうもありがとう! – user1458484