2016-10-09 3 views
-1

인터넷에서 찾을 수없는 질문을해야합니다. 프로세스를 사용하여 C# 응용 프로그램에서 cmd를 엽니 다. 몇 가지 명령을 전달해야하지만 각 명령 끝에서 나는이 명령은 그래서 난 다른를 계속할 수있었습니다 완료 있는지 확인해야합니다! 있습니다 .. System.Diagnostics 네임으로 그 가능성이 얼마나 ... 여기에 내가 시도 내 코드 ... 종료에 대한터미널에서 특정 명령을 수행 한 후 계속하십시오.

var startInfo = new ProcessStartInfo 
     { 
      FileName = "cmd.exe", 
      RedirectStandardInput = true, 
      RedirectStandardOutput = true, 
      UseShellExecute = false, 
      CreateNoWindow = false, 
      WorkingDirectory = @"E:/Visual Studio 2013/" + project_Name + "/packages/NUnit.ConsoleRunner.3.4.1/tools" 
     }; 

     var process = new Process { StartInfo = startInfo }; 

     process.Start(); 
     process.StandardInput.WriteLine("nunit3-console.exe E:/Debug/Report_Testing.dll"); 


     process.WaitForExit();  

대기는 여기 무한히 멈추고이 코드 줄을 전달할 수 없습니다. 이 문제를 해결하는 방법은 무엇입니까?

답변

0

/c nunit3-console.exe E:/Debug/Report_Testing.dll 옵션을 추가하십시오.

지금은 cmd으로 실행되며 명령 다음에 프롬프트가 계속 나타납니다. WaitForExitcmd이 끝날 때까지 기다리고 있으며 결코 완료되지 않습니다.

 process.StandardInput.WriteLine("nunit3-console.exe E:/Debug/Report_Testing.dll" + "&" +"exit"); 

// 종료 한 다음 대기 사용

+0

당신을 이해할 수 없습니다. 죄송합니다. 명령이 완료되면 알고 싶습니다 .../k 옵션은 무엇을합니까? 당신은 내가 서예 선에 그것을 추가하기를 원합니 까? –

+0

@ OmarEl-elamy 당신의 프로세스는 nunit 러너가 아닌'cmq'을 시작합니다. 그래서 종료를 위해 프로세스에 연결됩니다. 코드에서 그것을 닫으려면 명령 행에'exit'을 보내야합니다. 그러나 나는 그것이 정말로 우아 할 것이라고 생각하지 않습니다. –

+0

테스트 러너는 cmd의 ** 하위 **로 실행되므로 러너가 종료 되더라도 상위는 실행되지 않습니다. –

-1

나는 해결책에 도달 관리했습니다 : 내를 WriteLine 명령이 추가되었습니다

이처럼 그것을 변경 process.WaitForExit();

나는 이것으로 명령이 실행되었는지 확인했습니다.

+0

정말 심술 궂습니다. 한 번 명령을 실행하려고합니다. – user4388177

+0

한 번 명령 방법 how ?? 나는 그저 끝내고 나서 끝내고 싶어? –

관련 문제