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 命令?
最佳答案
您的循环始终使用相同的文件名,这意味着它只是覆盖文件,您需要改变它。而不是使用
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 次)
关于c# - 如何在C#中循环几个dos命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10446031/