0

我有一个简单的问题,但我不知道如何处理。那就是:我有一个简单的批处理文件,可以删除文件夹中的所有文件(例如)。我可以在任何地方运行它,但我想通过 C# 的应用程序执行它。一切都很好如果项目文件夹不包含空格(“示例:C:\Project Test\test.bat”将是错误“但” C:\ProjectTest\test.bat“完成”)。

下面是我要运行的源代码(我再说一遍:如果项目文件夹在文件夹名称中包含空格,则只会出错)。如果项目文件夹没有空间,则在运行文件批处理时不会出错。

        Process myProcess = new Process();
        myProcess.StartInfo.FileName = "cmd.exe";
        myProcess.StartInfo.Arguments = "D:\\prepare.bat";
        myProcess.StartInfo.WorkingDirectory = "D:\\";
        myProcess.StartInfo.UseShellExecute = false;
        myProcess.StartInfo.RedirectStandardOutput = true;

        //myProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
        myProcess.Start();
        StreamReader myStreamReader = myProcess.StandardOutput;
        string myString = myStreamReader.ReadLine();
        MessageBox.Show(myProcess.StartInfo.Arguments + " " + myString);
        myProcess.WaitForExit();

谢谢。

4

3 回答 3

1

而不是"C:\Project Test\test.bat"使用"\"C:\Project Test\test.bat\""

于 2013-03-05T10:44:13.603 回答
1

尝试将脚本路径放在引号中:

myProcess.StartInfo.Arguments = "\"D:\\Project Test\\prepare.bat\"";
于 2013-03-05T10:42:14.093 回答
1

将您的论点用引号括起来,如下所示:

myProcess.StartInfo.Arguments = "\"C:\\Project Test\\test.bat\"" 

或者

myProcess.StartInfo.Arguments = @"\"C:\Project Test\test.bat\""

传递给 cmd 时,必须引用参数。

于 2013-03-05T10:43:18.307 回答