배치 스크립트 내에서 배치 스크립트를 어떻게 실행합니까?


97

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

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

답변:


222

사용 CALL에서와 같이

CALL nameOfOtherFile.bat

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

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

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


22

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

따라서 다음과 같은 파일 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!


2

당신이 사용할 수있는

call script.bat

아니면 그냥

script.bat

5
스크립트 내에서 다른 스크립트를 직접 호출하는 경우 호출 된 스크립트의 명령이 0이 아닌 값 (오류)을 반환하는 경우 호출 수신자 스크립트도 실행을 중지하고를 사용 call하면 오류가 발생하더라도 계속 실행됩니다. 호출 된 스크립트에서.
브루노 손가락

1

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

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"

1

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

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

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


이러한 각 스크립트의 모든 오류를 기본 스크립트의 출력으로 다시 파이프하는 방법이 있습니까?
gunslingor

0

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

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

-3

허, 이유는 모르겠지만 전화가 안돼서
call script.bat원래 콘솔로 돌아 가지 않았어요.
cmd /k script.bat원래 콘솔로 돌아 왔습니다.


2
일을하지 않고 무엇인지 설명 형식적으로 질문을 편집 고려 무엇을 비 작동 코드와 작업 코드를 포함, 한
wundermahn
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.