문제

을 얻기 위해서는 프로그램을 설치하는"한 번의 클릭으로 배포",를 사용하고 싶은 그루브한 스크립트를 시작/정지 다른 프로세스에 의해 통제 bat 스크립트를 실행의 다른 부분에 있는 파일시스템과도에서 다른 기계입니다.

를 실행하는 방법 이 스크립트와 어떻게 그것에서 각각의 작업 디렉토리?

알 Java

java.lang.Runtime's exec()

그러나 많은 문제이고 내가 궁금해하는 경우 그루비했고 어떤 종류의 속기 위해뿐만 아니라 이것?

감사합니다!

도움이 되었습니까?

해결책

Groovy는 일반적인 오래된 문자열에 execute () 메소드를 추가 했으므로 다음을 시도하십시오.

println "ls -la".execute().text

다른 팁

Execute () 메소드를 사용하여 "CMD /C"명령으로 접두사를 접두사하면 디렉토리를 변경 한 다음 Ampersand (Windows를 가정)를 사용하여 명령을 함께 체인 할 수 있습니다.

예를 들어, 하위 디렉토리로 가고 싶다고 가정합니다 서브 디르 거기에서 두 개의 배치 파일을 실행하십시오.

println "cmd /c cd subdir & batch1.bat & batch2.bat".execute().text

더 나은 방법이 없는지 확실하지 않지만 이것이 효과가 있습니다.

Java 5에서 소개 된 놀랍게도 합법적 인 Java 클래스 인 ProcessBuilder를 사용할 수도 있습니다.

ProcessBuilder가 당신을 허용합니다

  • 작업 디렉토리를 결정하십시오
  • 프로세스에 어떤 환경 변수가 있어야하는지 결정하십시오

보다 http://download.oracle.com/javase/1.5.0/docs/api/java/lang/processbuilder.html 간단한 예와 더 많은 문서.

는 경우에 당신은 두려워하지 않을 만드는 일부를 재사용할 수 있는 코드를 만들 수 있는 개체를 감싸니다.execute()프로세스가 시작됩니다.내가 무언가를 만들어 다음과 같이 정기적으로 사용.

새로 만들고 프로세스:

def proc="cmd".execute()

후에 사용할 수 있는"consumeProcessOutput()"을 관리하의 입력 및 출력에"proc".아무거나 당신에게 보낼 것에 행동으로 하지만 당신이 그것을 입력으로 모든 출력하는 셸을 사용할 수 있습니다.

나는 감싸는 모든 이에 폐쇄되도록 할 수 있다:

cmd("cd \\ \n dir ") {
    if(it.contains("AUTOEXEC.BAT")) 
        println it;
    return true;
}

를 얻는 디스플레이만 보여 줍니다 autoexec.bat 라인입니다.참고할 때까지 반환에서 진정한 클로저,stdin 는 프로세스를 사용할 수 있도록 보낼 수 있습니다 더 많은 선의의 텍스트와 상호 작용하는 시기이다.

내가 사용하는것은 매우 비기 때문에 같은 명령"cd"및"Dir"에서 작동하지 않 windows 니다.execute(),그렇게 간단합니다:

def directoryListing=cmd("cd\\\ndir")

을 얻을 것이다 나는 빠른 디렉토리 목록이다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top