배치 파일을 열어 두지 않고 백그라운드에서 프로세스를 실행하는 방법은 무엇입니까?


9

해당 스크립트의 하위 프로세스 (빌드 작업)로 배치 파일을 실행하는 Windows 서비스 (Bamboo 통합 서버)가 있습니다. 해당 배치 파일 내에서 프로세스를 시작하고 (workerprocess.exe라고 함) 백그라운드에서 해당 프로세스를 실행하고 싶습니다. 이것은 모두 좋은 것입니다.

start "title" /B workerprocess.exe

그것은 모두 잘되고 좋습니다. 문제는 이것이 빌드 작업의 완료를 유지한다는 것입니다. 따라서 배치 스크립트는 완료되지만 workerprocess.exe 하위 프로세스로 인해 서비스 (Bamboo)는 완료되었음을 알지 못합니다. 여전히 workerprocess.exe를 대기하고 출력을 표시합니다.

start 명령에 대한 설명서를 살펴본 결과 원하는 작업을 수행 할 수있는 것이 없습니다. 나는 이 질문을 보았지만 실제로 도움이되지는 않았다. 서비스는 여전히 프로세스가 끝나기를 기다린다.

요약하면 다음과 같습니다. 배치 스크립트에서 새 프로세스를 실행하여 완전히 분리되고 해당 배치 스크립트가 완료되기를 기다리는 모든 작업을 수행하지 않는 방법을 추측 합니다.


1
동일한 명령 창 내에서 프로세스를 시작하지 않도록 "/ B"매개 변수없이 시도 했습니까?
Josh

@JoshR, 그 점이 바뀌 었습니다. 서비스는 더 이상 프로세스로부터 출력을받지 않지만 여전히 프로세스에 의해 차단됩니다.
Jack Scott

답변:


2

숨겨진 시작 (HSTART) 을 사용해 보셨습니까 ? ($ 20 비용)

창을 숨기고 매시간 배치 작업을 실행하는 데 개인적으로 사용합니다. 또한 매개 변수 (또는 기본적으로 가정)를 순차적으로 실행하여 비동기 적으로 실행할 수 있다고 언급합니다. 이것이 CPU, 메모리 또는 디스크에서의 경합에 어떤 영향을 미치는지 모르겠지만 소프트웨어는 작업을 수행하기 전에 잠시 기다릴 수있는 옵션도 제공합니다.


2013 년 9 월에 답변을 썼을 때, 제품은 무료였습니다. 슬프게도 그들은 가격을 청구하고 있습니다.
일요일

3

링크 된 모든 스크립트는 원하는 이름으로 다운로드하여 저장할 수 있습니다.

1) IEXPRESS 솔루션-인수는 명령과 인수 만 허용합니다.

사용법 예 :

call hidder.bat myBat.bat  myexe.exe
call myexe.exe

2) SCHTASKS- 명령과 인수라는 두 개의 인수 만 다시 허용합니다. 또한 권한이 상승하여 시작되었는지 확인하고 가능하면 WEVTUTIL 명령으로 프로세스의 PID를 가져옵니다.

사용법 예 :

call SCHPhidden.bat "cmd /c myBat.bat"  "argument"

3) 'WScript.Shell'- 스크립트는 'WScript.Shell'의 전체 래퍼이며 가능한 모든 옵션은 명령 행 옵션을 통해 설정할 수 있습니다.이 스크립트는 jscript / batch 하이브리드이며 박쥐로 불릴 수 있습니다.

사용법 예 (자세한 내용은 '-h'를 사용하여 도움말을 인쇄하십시오) :

call ShellRunJS.bat "notepad.exe" -style 0 -wait no 

4) 'Win32_ProcessStartup'- 명령 줄 인수를 통해 전체 래퍼 및 모든 옵션에 다시 액세스 할 수 있습니다. 이번에는 일부 Jscript 및 일부 VBScript 코드가 포함 된 WSF / 배치 하이브리드이지만 시작된 프로세스의 PID를 반환합니다. X / Y 좌표와 같은 일부 옵션을 사용할 수 있습니다.

사용 예제 (에 도움을 인쇄 추가 정보를 원하시면 '-h')가 아닌 경우는 실행 / 스크립트의 전체 경로가 필요합니다. %path%:

call win32process.bat "notepad" -arguments "/A openFile.txt"  -showWindow 0 -title "notepad"

5). NET 솔루션 . ProcessStartInfo 옵션의 대부분의 옵션이 사용됩니다 (그러나 결국 모든 것을 포함하기에는 너무 피곤했습니다).

사용법 예 (자세한 내용은 '-h'를 사용하여 도움말을 인쇄하십시오) :

call ProcessStartJS.bat "notepad" -arguments "/A openFile.txt"  -style Hidden -directory "." -title "notepad" -priority Normal

링크를 찾을 수 없습니다
Rahil Wazir

@rahilwazir-편집되었습니다.
npocmaka

1
나는 이것들을 조금 시도했다. 세부 사항은 위대한 거래를 정리해야한다고 생각한다. 첫 번째 접근 방식 인 IExpress를 살펴보면 위의 예에서 다른 것을 사용하는 hidder.bat 링크가 있습니다. 스크립트를 실행할 때 위에서 언급하지 않은 EXE를 묻는 것이 실패했습니다. github에 마크 다운이 있었지만 그렇지 않은 경우 괜찮습니다. 마지막
으로이
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.