CMD命令不能在C#中运行

时间:2014-10-08 14:54:54

标签: c# .net visual-studio-2012 cmd

我试图运行以下内容:

String command = @"Rscript C:\Users\someone\Documents\generate_files.R " + fname + " " + folder;

System.Diagnostics.Process.Start("CMD.exe", "/K PATH C:\\Program Files\\R\\R-3.1.1\\bin;%path%"); 
System.Diagnostics.Process.Start("CMD.exe", "/K " + command);

执行时没有任何反应,有人知道为什么吗?如果我试试

System.Diagnostics.Process.Start("CMD.exe", "/K MD TEST");

工作正常:s

e:一些额外的信息,第一个命令是设置PATH,这样只需键入Rscript就可以调用Rscript。此外,当我在普通的CMD界面中执行这些命令时,这两个命令都可以正常工作。

3 个答案:

答案 0 :(得分:2)

准备批处理文件并执行

using(StreamWriter sw = new StreamWriter("runscript.cmd", false))
{
   sw.WriteLine(@"PATH C:\Program Files\R\R-3.1.1\bin;%path%"); 
   sw.WriteLine(@"Rscript C:\Users\someone\Documents\generate_files.R " + fname + " " + folder);
}
System.Diagnostics.Process.Start("CMD.exe", "/K runscript.cmd"); 

这假设您对当前目录具有读/写权限。您可以使用

将位置更改为更合适的位置
string path = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
string fileCmd = Path.Combine(path, "runscript.cmd");
using(StreamWriter sw = new StreamWriter(fileCmd, false)
....

答案 1 :(得分:0)

史蒂夫意识到,我正在运行两个控制台进程。要解决这个问题,我只需在同一个过程中运行两个命令。

答案 2 :(得分:0)

cmd.Arguments =" / K \"" + fullFilePath;

*尝试双倍" "就在PATH之前