2009-10-20 6 views
4

다음 코드를 얻으려고 노력 중이므로 C# 프로그램에서 perl 스크립트를 호출 할 수 있습니다. 나는 xp 서비스 팩 3에서 visual stdio 2008을 사용하여 개발 중입니다.ProcessStartInfo에서 perl.exe를 호출 할 수 없습니다.

myProcess = new Process(); 
     ProcessStartInfo myProcessStartInfo = new ProcessStartInfo("perl.exe"); 
     myProcessStartInfo.Arguments = @"C:\Documents and Settings\test_perl.pl"; 
     myProcessStartInfo.UseShellExecute = false; 
     myProcessStartInfo.RedirectStandardOutput = true; 
     myProcessStartInfo.WindowStyle = ProcessWindowStyle.Hidden; 
     myProcessStartInfo.CreateNoWindow = true; 
     myProcess.StartInfo = myProcessStartInfo; 

     myProcess.Start(); 
     string output = myProcess.StandardOutput.ReadToEnd(); 
     MessageBox.Show(output); 
     myProcess.WaitForExit(); 

나는 test_perl.pl이 있는지 확인하고, perl.exe를 notepad.exe로 변경하면 위의 코드가 작동합니다. 그러나 perl.exe를 사용하면 메시지 상자가 비어 있습니다.

왜 이것이 잘못된 것인지 알 수 없습니다. 이유를 알면 도와주세요.

감사

답변

6

perl.exe는 명령 행에서 공백이 포함 된 인용되지 않은 경로를 처리 할 수 ​​있습니까?

    :

    파일 경로가 인용되지 않는 명령 줄 인수는, 공백으로 (이 경우하여 Perl.exe) 응용 프로그램을 구분하고 있기 때문에
    myProcessStartInfo.Arguments = @"""C:\Documents and Settings\test_perl.pl"""; 
    

    는 세 개의 인수가 표시됩니다 경로를 인용 해보십시오

  1. C : \ 문서
  2. 설정 \ test_perl.pl

펄 것이다 가능성이 파일을 열려고 "C : \ 문서 uments ". 물론 존재하지 않습니다. 해결 방법은 공백이 포함 된 파일 경로 (또는 일관성있게 모든 파일 경로)를 인용하는 것입니다.

당신은 notepad.exe가 따옴표없는 파일 경로를 잘 처리한다고 언급합니다. 아마도 그것은 평균 곰보다 더 똑똑한 메모장 일 뿐이며 자신을위한 주장을 병합합니다.

물론 해당 경로에 파일이 있는지 확인하십시오. 실제로 이것은 약간 특이한 길입니다. 일반적으로 사용자 파일은 C : \ Documents and Settings \ myusername \ Documents \ file.ext 등으로 표시됩니다.

+0

perl.exe를 notepad.exe로 변경하면 파일 경로에 문제가 있다고 생각하지 않습니다. 또한 myusername \ Documents \을 삭제합니다. – alex

+0

... 어쨌든 사용해보십시오. 메모장! = perl. –

+0

마이클, 너 좋다! 감사! 지금 일하고있다. 하지만 거기에 여분의 이유는 무엇입니까? – alex

0

%PATH%에 펄인가? 명령 프롬프트를 열고 "perl -v"을 입력하십시오.

+0

예, dos 창에서 perl xxx.pl 또는 xxx.txt를 실행할 수 있습니다. – alex

+0

혼란 스럽네요, 당신이 옳았다 고 표시했으나 여전히 효과가없는 것 같습니다. 나는 이것을 시도하고 그것은 나를 위해 일했다. 펄 프로그램이 아무 것도 출력하지 않습니까? 표준 출력으로 출력 할 수 있습니까? Windows 응용 프로그램 대신 콘솔 프로그램에서 사용해보십시오. 펄 프로그램의 내용은 무엇입니까? – tster

관련 문제