2012-05-04 9 views
2
mp.StartInfo.FileName = "E:\\Naag\\execute.bat"; 
mp.StartInfo.UseShellExecute = false; 
mp.StartInfo.CreateNoWindow = true; 
mp.StartInfo.RedirectStandardInput = true; 
mp.StartInfo.RedirectStandardOutput = true; 
for (i = StartSerialNo; i<EndSerialNo;i++) 
{ 
    iCnt++; 
    mp.StartInfo.Arguments = sFileName+StartSerialNo.ToString()+ " " + smyName; 
    mp.Start(); 
    mp.WaitForExit(); 
} 

execute.batの引数はfilename4567 mynameです。これでExecute.batは4つの.outファイルを作成します。Cで少数のdosコマンドをループする方法

私は10回ループしたいので、40個の.outファイルが必要です。しかし、私は4つの.outファイルしか持っていません。

これは、ループが1回だけ行われたことを示します。だから何がうまくいったの?

どのようにC#でdosコマンドをループするのですか?

+0

おそらくexecute.batはこれらの4つのファイルを繰り返し上書きしますか? – Henrik

+0

** StartSerialNo **は同じですが、おそらく** i **を使用しますか? – fankt

+1

そして、どこにDOSが入りますか? – CodesInChaos

答えて

1

あなたのループは常にファイルを上書きしているという意味で、同じファイル名を使用しています。変更する必要があります。

mp.StartInfo.FileName = "E:\\Naag\\execute.bat"; 
mp.StartInfo.UseShellExecute = false; 
mp.StartInfo.CreateNoWindow = true; 
mp.StartInfo.RedirectStandardInput = true; 
mp.StartInfo.RedirectStandardOutput = true; 
for (i = StartSerialNo; i<EndSerialNo;i++) 
{ 
    iCnt++; 
    mp.StartInfo.Arguments = sFileName + i + " " + smyName; 
    mp.Start(); 
    mp.WaitForExit(); 
} 

がライン場所にあなたのループ内でブレークポイントを置く:その結果

sFileName + i + " " + smyName; 

:むしろ名として

sFileName+StartSerialNo.ToString()+ " " + smyName; 

を使用するよりも、あなたはループカウンタiを使用する必要がありますそれはあなたにこれを示していたファイルを作成します(ループは実際に10回実行されていました)

+0

hoooooooooooooooooooo !,はい。非常に悪い開発者。これのために1時間を無駄にした。 どうもありがとうございます。 :) –

+0

その正しい答えがnaag – RhysW

+0

@Naag_Algatesという印を付けることを覚えていれば、私はこれを自己解決のレッスンとして扱います。デバッガでこのループを踏んで、ファイル名の値を調べて、ループが10回呼び出されていて、同じファイルを上書きしていることを確認できたはずです。これで5分で解決できました。 –

1

プロセスに送信される引数はすべてのループで同じです。したがって、.batは毎回同じファイルを作成している可能性があります。

私の推測(とそれだけで推測だ)であるあなたが意味すること:あなたは.BATが正しく出力を作成し、上書きされていない、あなたの.batコードを共有していないため

mp.StartInfo.Arguments = sFileName+i.ToString()+ " " + smyName; 
+0

はい。実際には、私はStartSerialNo ++を追加したはずです。または、sFileName + i.ToString()にsFileName + StartSerialNo.ToString()を変更する必要があります。 ありがとう! :)) –

+0

私はそれをとにかく決めるのに十分なインテリジェントなので、.ToStringは必要ありません。 – RhysW

+0

r rite。ありがとう! –

1

私は、ゲス同じ4つのファイル。

関連する問題