如何在C#中循环几个dos命令

时间:2012-05-04 09:15:43

标签: c# loops

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文件。

因为我想循环它10次我应该有40个.out文件。但我只有4个.out文件。

这表明循环只进行了一次。出了什么问题?

如何在C#中循环dos命令?

3 个答案:

答案 0 :(得分:1)

您的循环始终使用相同的文件名,这意味着它只是覆盖文件,您需要改变它。而不是使用

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

作为您需要使用循环计数器i

的名称
sFileName + i + " " + smyName;

导致:

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();
}

在你创建文件的行的循环中放置一个断点会向你展示这个(并且循环实际上被执行了10次)

答案 1 :(得分:1)

发送到进程的参数在每个循环中都是相同的,因此.bat可能每次都创建相同的文件。

我的猜测(这只是一个猜测)是你的意思:

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

答案 2 :(得分:1)

我猜,因为你没有共享.bat代码,因为.bat没有正确创建输出并覆盖相同的4个文件。