2013-01-08 2 views
1

Java 인스턴스를 실행하는 동일한 쉘 (예 : in a new console instance)에서 실행중인 것처럼 배치 파일을 Windows에서 실행할 수 있습니까?런타임 환경에서 배치 파일을 실행하십시오.

타사에서 제공하는 실행하고 싶은 배치 파일이 있으며 조건부로 많은 환경 변수 집합을 지정하면 이 아닌은 Java로 변환해야하지만 특정 작업에는 필요합니다. 자바 애플 리케이션에서 작동합니다.

Jar 파일을 실행하기 전에 명령 프롬프트에서 수동으로 배치 파일을 실행하여 동일한 효과를 얻는 방법도 있지만이 경우 많은 타이핑 또는 많은 사용자 지정 배치 파일이 필요합니다.

+0

새 콘솔 창에서 실행하면 어떤 점이 좋습니까? –

+1

@defaultlocale'set PATH = % PATH %; foo'와 같은 명령문은 java 인스턴스 대신 새로운 인스턴스에만 적용됩니다. – Qix

답변

3

짧은 대답 : 아니오.

"java 인스턴스를 실행하고있는 동일한 쉘에서 실행 중"이라고 말하면 & 쉘이 일부 공통/공유 레벨에 공존한다는 것을 나타내는 것 같습니다. 그들의 관계는 대신 계층 적입니다. 셸은 부모 프로세스이며, 자식 프로세스로 java를 시작했습니다. 그 과정에

  • 표시하고, 자식 프로세스에
  • 볼 수 있지만, 부모에 결코
  • :

    환경 (예 : 일괄 처리 등) 프로세스를 만드는 모든 변경

    은 방법.

명령 프롬프트에서 실행될 때 배치 파일이 현재 환경을 즉시 변경시키는 이유는 명령 셸 (cmd.exe)이 배치 파일을 "제자리에서"처리하도록 설계 되었기 때문입니다. 새로운 프로세스 [유닉스에서는 셸이 스크립트 파일을 "소스"로 작성하여 동일한 작업을 수행합니다].

"cmd.exe"가 아닌 Java는이 작업을 수행하지 않습니다. 앞서 언급했듯이 java에서 배치 파일을 실행하면 새 명령 프로세서가 자식 프로세스로 생성되며 완료되면 Java 환경에 영향을 미치지 않습니다.

옵션은 다음과 같습니다

  1. 이 전화를 다른 배치 파일을
    • 에 배치 파일을 작성 후
    • 이 자바 프로세스를 시작, 또는
  2. 에 의해 배치 파일을 구문 분석하여 자바 프로그램. "배치 파일"의 유일한 유효한 내용이 "X = Y"형식의 간단한 할당 문이라고 "위임"한 경우이 작업은 그리 어렵지 않습니다. 실제로는 Properties file으로로드 할 수 있습니다.
+0

나는 이것을 두려워했다. 나는 최선의 행동 방침을 찾아야 할 것이다. 감사! – Qix

관련 문제