Exec批处理文件不在项目文件夹中以空格运行

时间:2013-03-05 10:39:15

标签: c# file batch-file command dos

我有一个简单的问题,但我不知道如何处理这个问题。那就是:我有一个简单的批处理文件,删除文件夹中的所有文件(例如)。我可以在任何地方运行它,但我想通过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();

谢谢你。

3 个答案:

答案 0 :(得分:1)

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

myProcess.StartInfo.Arguments = "\"D:\\Project Test\\prepare.bat\"";

答案 1 :(得分:1)

将您的参数括在引号中,如下所示:

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

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

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

答案 2 :(得分:1)

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