2014-10-08 5 views
0

Я пытаюсь запустить следующее:CMD команды не будет работать в C#

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

е: Некоторая дополнительная информация, Первая команда установка PATH, так что Rscript можно назвать просто набрав Rscript. Кроме того, обе эти команды работают, когда я делаю их в обычном CMD-интерфейсе.

+0

взглянуть на ProcessStartInfo – Sorceri

+0

Возможный дубликат [Выполнять команды командной строки] (http://stackoverflow.com/questions/1469764/run-command-prompt-commands) – ZoomVirus

+0

@ZoomVirus: Я не согласен полностью. OP, похоже, уже сделал это . –

ответ

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) 
.... 
0

Как понял Стив, я работал с двумя консольными процессами. Чтобы решить эту проблему, я просто запускал обе команды в том же процессе.

+1

Вы должны (вероятно) принять ответ Стива, а не опубликовать свой собственный. – Wilbert

0

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

* попробовать двойной "" прямо перед PATH

Смежные вопросы