C# 如何在C中循环几个dos命令# mp.StartInfo.FileName=“E:\\Naag\\execute.bat”; mp.StartInfo.UseShellExecute=false; mp.StartInfo.CreateNoWindow=true; mp.StartInfo.RedirectStandardInput=true; mp.StartInfo.RedirectStandardOutput=true; 对于(i=StartSerialNo;i
您的循环始终使用相同的文件名,这意味着它只是在覆盖文件,您需要更改它。而不是使用C# 如何在C中循环几个dos命令# mp.StartInfo.FileName=“E:\\Naag\\execute.bat”; mp.StartInfo.UseShellExecute=false; mp.StartInfo.CreateNoWindow=true; mp.StartInfo.RedirectStandardInput=true; mp.StartInfo.RedirectStandardOutput=true; 对于(i=StartSerialNo;i,c#,loops,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;
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();
}
作为名称,您需要使用循环计数器i
:
sFileName+StartSerialNo.ToString()+ " " + smyName;
导致:
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;
对于(i=StartSerialNo;i,发送到进程的参数在每个循环上都是相同的,因此.bat可能每次都创建相同的文件
我猜(这只是一个猜测)你的意思是:
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();
}
我猜,因为你没有共享你的.bat代码,.bat没有正确创建输出并覆盖相同的4个文件。也许execute.bat只是一次又一次地覆盖这4个文件?StartSerialNo是相同的,也许你想使用I?DOS从何而来?是的,非常糟糕的开发者。W我为此浪费了一个小时。无论如何,非常感谢。:@Naag_Algates,我会把这当作自我解决的一课。您应该能够在调试器中单步执行此循环,检查文件名的值,并验证循环是否被调用了10次,以及是否覆盖了同一文件。这将花费您5分钟来解决。但我想在RDP中运行此exe。同一bat文件在本地计算机中不可访问。这就是原因。因此,我必须在.out文件中构建它,而不是调试它。不管怎样,谢谢。实际上,我应该添加StartSerialNo++。或者我应该将sFileName+StartSerialNo.ToString()更改为sFileName+i.ToString()。所以非常感谢!:)不需要在我之后再去尝试它,它足够聪明,可以决定它到底是什么
mp.StartInfo.Arguments = sFileName+i.ToString()+ " " + smyName;