[command-line] 배치 스크립트 내에서 배치 스크립트를 어떻게 실행합니까?

배치 스크립트 내에서 다른 배치 스크립트를 어떻게 호출합니까?

if성명 에서 실행하고 싶습니다 .



답변

사용 CALL에서와 같이

CALL nameOfOtherFile.bat

그러면 현재 배치 파일의 실행이 차단 (일시 중지)되고 CALLed 파일이 완료 될 때까지 대기합니다 .

차단하지 않으려면 START대신 사용하십시오.

cmd 프롬프트에서 CALL /?또는 START /?을 사용하여 핵심 세부 정보를 가져옵니다.


답변

명령 줄에서 실행하는 것처럼 이름으로 배치 스크립트를 호출 할 수 있습니다.

따라서 다음과 같은 파일 bar.bat이 있다고 가정하고 file echo This is bar.bat!에서 호출하고 싶다면 foo.bat다음과 foo.bat같이 작성할 수 있습니다 .

if "%1"=="blah" bar

foo blah명령 줄에서 실행 하면 다음이 표시됩니다.

C:\>foo blah

C:\>if "blah" == "blah" bar

C:\>echo This is bar.bat!
This is bar.bat!

그러나주의하십시오 . 다른 배치 스크립트에서 배치 스크립트를 호출하면 원래 배치 스크립트의 실행이 중지됩니다. 보조 배치 스크립트를 실행 한 다음 이전 배치 스크립트로 돌아가려면 call명령 을 사용해야합니다 . 예를 들면 :

if "%1"=="blah" call bar
echo That's all for foo.bat!

foo blah그것을 실행 하면 다음을 볼 수 있습니다.

C:\>foo blah

C:\>if "blah" == "blah" call bar

C:\>echo This is bar.bat!
This is bar.bat!

C:\>echo That's all for foo.bat!
That's all for foo.bat!


답변

CALL을 사용해야합니다.

CALL batch.bat


답변

당신이 사용할 수있는

call script.bat

아니면 그냥

script.bat


답변

예를 들면 다음과 같습니다.

a.bat가 있습니다.

@echo off
if exist b.bat goto RUNB
goto END
:RUNB
b.bat
:END

b.bat는 a.bat에서 조건부로 호출됩니다.

@echo off
echo "This is b.bat"


답변

다른 창에서 배치 파일을 열려면 start. 이렇게하면 기본적으로 두 개의 스크립트를 동시에 실행할 수 있습니다. 즉, 방금 호출 한 스크립트가 완료 될 때까지 기다릴 필요가 없습니다. 아래의 모든 예가 작동합니다.

start batch.bat
start call batch.bat
start cmd /c batch.bat

스크립트가 완료 될 때까지 기다리려면을 시도하십시오 start /w call batch.bat. 그러나 batch.bat는 exit.


답변

최소화 된 상태로 별도의 명령 창에서 병렬 실행

dayStart.bat

start "startOfficialSoftwares" /min cmd /k call startOfficialSoftwares.bat
start "initCodingEnvironment" /min cmd /k call initCodingEnvironment.bat
start "updateProjectSource" /min cmd /k call updateProjectSource.bat
start "runCoffeeMachine" /min cmd /k call runCoffeeMachine.bat

동일한 창에서 순차적으로 실행

release.bat

call updateDevelVersion.bat
call mergeDevelIntoMaster.bat
call publishProject.bat