2012-02-14 2 views
1

죄송합니다. 동일한 질문을 다시 열었습니다. \ Cygwin에서 \ 빈 \ 테스트프로세스 작성기를 사용하여 두 개의 다른 명령을 실행하는 방법

  • 쉬 app.sh AK-RD 02.20 D : \ Cygwin에서 \ 빈 \ 된 test_files

  • 위 나는 두 명령

    1. D를 실행하려면 동일한 명령 프롬프트에서 실행하고 싶은 두 개의 명령이 있습니까? D : \ cygwin \ bin \ Test 폴더와 같은 프롬프트에서 다음 명령을 실행하고 싶습니다.

      쉬 app.sh AK-RD 02.20 D : \ Cygwin에서 \ 빈 \ 된 test_files

      명령은 모양을,

      명령 : - D : \ Cygwin에서 \ 빈 \ 테스트> 쉬 app.sh AK-RD 02.20 D : \ cygwin \ bin \ Test_files

      java의 프로세스 빌더를 사용하여이를 수행하는 방법. 아니면 다른 방법이 있습니다.

      String cmd; 
          cmd = "sh app.sh AK-RD 02.20 D:\\cygwin\\bin\\Test_files"; 
          ProcessBuilder probuilder = new ProcessBuilder(cmd); 
          probuilder.directory(new File("D:\\cygwin\\bin\\Test")); 
          Process process = probuilder.start(); 
      

      코드에서 probuilder.directory을 변경한다고해도 도움이되지 않습니다. 나는 당신이

      ProcessBuilder pb = new ProcessBuilder(); 
      pd.directory(new File("D:\\cygwin\\bin\\Test")); 
      

      작업 디렉토리를 설정하기 위해 호출 할 수 있습니다

      Cannot run program "'sh app.sh AK-RD 02.20 D:\\cygwin\\bin\\Test_files CreateProcess error=2, The system cannot find the file specified 
      

    답변

    0

    오류로 명령을 분할 할 수 있습니다 시스템이 경로에서 파일 sh app.sh AK-RD 02.20 D:\\cygwin\\bin\\Test_files.exe을 찾을 수 없음을 의미합니다.

    즉, ProcessBuilder은 전체 문자열 (백 슬래시 및 공백 포함)을 명령 이름으로 해석합니다. 이것은 당신이 원하는 것이 아닙니다.

    분할 개별 단어로 명령을

    ProcessBuilder pb = new ProcessBuilder("sh", "app.sh", "AK-RD", "02.20", "D:\\cygwin\\bin\\Test_files"); 
    

    하고 올바른 디렉토리에 CD-pb.directory()를 사용합니다.

    는 다른 방법으로는, BAT/CMD 스크립트에 모든 것을 넣어 ProcessBuilder

    0

    을 얻고있다.

    편집 :

    또한 시도하고 인수

    String cmd[] = new String[5]; 
    cmd[0] = "sh"; 
    cmd[1] = "app.sh"; 
    cmd[2] = "AK-RD"; 
    cmd[3] = "02.20"; 
    cmd[4] = "D:\\cygwin\\bin\\Test_files"; 
    
    +0

    와 u는 말할 정확히 어떻게 내가 오류 CreateProcess를 오류 얻고 있기 때문에 = 2, 파일을 찾을 수 없습니다 내가 ' –

    +0

    를 지정 그것이 있어야 할 수있는 실행 명령을 인수로 나누지 않을 때 이상한 행동을 보았습니다. 너에게 쪼개지 않는가? 아직 사랑이 없나요? – ughzan