2016-10-19 2 views
2

코드에서 CMD를 실행하려고합니다. 이것은 내가 내 명령 줄에서 실행 라인을, 그리고 내가 수동으로 실행할 때 작동 : /C C:\Dev\MySite\web\Website\comparison-tool\data\ & node csvToJson.jsC# 코드의 CMD 명령이 작동하지 않습니다. (Windows)

string commandText = String.Format("/C {0}{1} & node csvToJson.js", root, csvToJsonFolder); 
Process.Start("CMD.exe", commandText); 

의 CommandText가 평가 :

C:\Dev\MySite\web\Website\comparison-tool\data\ & node csvToJson.js 

이 내 코드에서 무엇을 가지고

오류없이 실행되지만 아무 것도 발생하지 않은 것 같습니다. 명령 프롬프트가 열리지 않으므로 발생한 오류를 볼 수 없습니다. 이 명령은 파일이 특정 폴더에 기록되도록합니다. 명령을 수동으로 실행하면 파일이 기록되지만 코드를 실행하면 파일이 기록되지 않습니다.

편집 : 나는이 내 코드를 변경 :

Process process = new Process(); 
ProcessStartInfo startInfo = new ProcessStartInfo(); 
startInfo.WindowStyle = ProcessWindowStyle.Normal; 
startInfo.FileName = "cmd.exe"; 
startInfo.Arguments = commandText; 
startInfo.RedirectStandardOutput = true; 
startInfo.UseShellExecute = false; 
process.StartInfo = startInfo; 
process.Start(); 

string result = process.StandardOutput.ReadToEnd(); 

결과는 그냥 빈 문자열입니다. 오류 메시지 또는 아무것도 없습니다.

+0

명령 프롬프트에서 각 공백 구분 문자열을 개별 입력으로 가져옵니다. – Media

+0

'ProcessStartInfo'를 사용하여 출력을'StreamReader'로 리다이렉트하도록 말할 수 있습니다. 그러면 콘솔이 말하는 것을 읽을 수 있습니다. [이 CodeProject 기사] (http://www.codeproject.com/Articles/25983/How-to-Execute-a-Command-in-C) 첫 번째 섹션에서 예제가 있습니다. 어쩌면 오류를 볼 수 있다면 더 디버깅 할 수 있습니다. – Equalsk

+0

아마 ProcessStartInfo를 사용해 보시겠습니까? 두 번째 대답은 여기에 http://stackoverflow.com/a/1469790/2202391 – Daniil

답변

0

내 명령 텍스트에 문제가있어서 "cd"를 잊어 버렸습니다. "/ C cd C : \ Dev \ MySite \ web \ Website \ comparison-tool \ data \ & 노드 csvToJson.js"

+0

난 그냥이 쓰고 싶었어. C# 응용 프로그램이 드라이브가 아닌 다른 드라이브에서 실행되는 경우에도 '/ C/DC : \ Dev \ MySite \ web \ Website \ comparison-tool \ data \ & node.exe csvToJson.js' 기음:. – Mofi

+0

이미 추가했습니다! 감사! –

관련 문제