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