2012-12-07 3 views
0

이전에 이와 같은 작업을 수행했지만 뭔가 올바르게 작동하지 않으며 그 작업이 100 % 확실하지 않습니다.실행 파일 시작 및 인수 전달

실행 파일이 executable.exe인데 파일을 가져 와서 일부 마법을 수행하고 다른 위치에 다른 파일을 출력합니다. 그래서 CMD를 통해이 실행 파일을 실행하면 "path1""path2"을 전달하면됩니다. 공백이있을 수 있기 때문에 경로를 인용문에 넣었습니다. 그러나

public void methodToRunExecutable() 
{ 
var exePath = "\""+ "C:\\SomePathToAnExecutable" + "\""; 
var firstFilePath = "C:\\PathToFirstFile\\NameOfFile.txt" 
var secondFilePath= "C:\\PathToSecondFile\\NameOfFile.txt" 

Process.Start(exePath, "\""firstFilePath + "\" \"" + secondFilePath+"\"") 
} 

, 내가 디버깅있을 때이 "\"" 실제로 백 슬래시처럼 \"로 게재되고 있다는 것입니다주의 사항 :

어쨌든

, 그래서 내가 내 C# 응용 프로그램에서 일을하고있어 뭔가처럼 따옴표를 벗어나지 않습니다.

"C:\\PathToFirstFile\\NameOfFile.txt" "C:\\PathToSecondFile\\NameOfFile.txt" 

을하고 그것을 잘 작동합니다 :

내가 CMD의 EXE를 실행할 때 내가 할 일은하고, 명확합니다. 내가 뭘 잘못하고 있는지에 대한 어떤 생각? "이 이스케이프되지 않았기 때문입니까?

+0

(나는 definetely 그에게 동의하지만) 코드가 작동해야합니다. 실제로 작동하지 않는 것은 무엇입니까? 모든 경로가 실제로 존재합니까? – horgh

+0

'''은 디버깅하는 동안'\ "와 (과) 같이 표시되지만 코드가 작업을 수행하는 것을 방해하지는 않습니다. – horgh

답변

2

이스케이프 처리는 오류가 발생하기 쉽고 오류가 발생합니다. @ 사용하여 당신은 탈출 할 필요가 없습니다 :

var firstFilePath = @"C:\PathToFirstFile\NameOfFile.txt" 

또한 Process를 사용하는 것이 더 쉬울 수 있습니다 이런 식으로 :

심지어 밥 혼의 말씀에도 불구하고
using (Process process = new Process()) 
{ 
    process.StartInfo.FileName = exePath; 
    process.StartInfo.Arguments = ""; // args here 
    process.Start(); 
}