2009-05-25 3 views
2

박쥐 파일을 실행하는 다음 코드가 있습니다. 박쥐 파일 다음 몇 가지 .exe 실행됩니다 .. 어떤 물건 않습니다. 물건은 5-10 초 걸린다.Process.Start (..) 중에 외부 명령 창을 열어 둘 수있는 방법은 무엇입니까?

ProcessStartInfo start = new ProcessStartInfo 
{ 
    Arguments = "\"" + newTargetFile + "\"" + 
       " " + 
       "\"" + originalFile.FullName + "\"", 
    FileName = filename, 
    WindowStyle = ProcessWindowStyle.Normal, 
    CreateNoWindow = false, 
    UseShellExecute = false 
}; 

// Run the external process & wait for it to finish 
using (Process proc = Process.Start(start)) 
{ 
    proc.WaitForExit(); 
} 

내가하려는 것은 프로세스가 종료 된 후에도 명령 창을 열어 두는 것입니다. 이 일을 할 수있는 방법이 있습니까?

그렇지 않으면,이 창에 대한 걱정을 할 필요가 없으므로 대신 해당 창의 모든 출력을 내 디버거로 보낼 수 있습니까?

건배.

답변

1

/k 인수를 사용하여 cmd 인터프리터를 실행하고 배치 파일 이름을 다음 인수로 전달하는 경우 사용자가 수행 한 작업을 가져와야합니다./k 인수는 Windows에게 cmd 인터프리터를 끝내고 나면 다음 인수로 처리하도록 지시합니다.

확실히 RedirectStandardOutput 속성을 사용할 수도 있지만 결국에는 더 복잡 할 것이라고 생각합니다.

+1

환호. 나는 또한 'pause'를 .bat 파일의 끝에 추가했다. :) 또한 트릭을 수행했다 : P –

0

개방 터미널을 유지하기 위해/K 인수와 함께이 같은 시도 :

System.Diagnostics.Process proc = new System.Diagnostics.Process(); 

    string path = System.IO.Directory.GetParent(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)).FullName; 
    if (Environment.OSVersion.Version.Major >= 6) 
    { 
     path = System.IO.Directory.GetParent(path).ToString(); 
    } 

    proc.StartInfo.WorkingDirectory = path; 
    proc.StartInfo.FileName = "cmd.exe"; 
    proc.StartInfo.Arguments = "/k git --version"; 
    proc.Start(); 
관련 문제