Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
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 - Fatal编程技术网

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;