WAIT 옵션이있는 START 명령은 어떻습니까
START /wait notepad.exe
START /wait notepad.exe
... CALL 명령을 사용하는 것과 다른 점이 있습니까?
CALL notepad.exe
CALL notepad.exe
실행되는 것에 따라 다른 것과 다르게 동작 할 수있는 상황이 있습니까?
WAIT 옵션이있는 START 명령은 어떻습니까
START /wait notepad.exe
START /wait notepad.exe
... CALL 명령을 사용하는 것과 다른 점이 있습니까?
CALL notepad.exe
CALL notepad.exe
실행되는 것에 따라 다른 것과 다르게 동작 할 수있는 상황이 있습니까?
답변:
의 경우 EXE 파일, 나는 차이가 거의 중요하지 않습니다 가정합니다.
그러나 exe 를 시작하기 위해 당신은 필요하지 않습니다 CALL
.
또 다른 배치를 시작할 때 그것은 큰 차이점
으로 CALL
같은 창에 시작하고 호출 된 배치가 같은 변수 컨텍스트에 액세스 할 수 있습니다.
따라서 호출자에게 영향을 미치는 변수를 변경할 수도 있습니다.
START
호출 된 배치에 대해 새 cmd.exe를 작성하고 / b없이 새 창을 엽니 다.
새로운 맥락이므로 변수를 공유 할 수 없습니다.
사용start /wait <prog>
- <prog>
종료시 환경 변수의 변경 사항이 유실 됨
-호출자 <prog>
가 종료 될 때까지 대기
사용call <prog>
- 들어 exe를 그냥 시작 동등하게 있기 때문에, ommited 할 수 있습니다 <prog>
-를 들어 EXE-이 prog 발신자 배치 대기 또는 시작 exe 인 비동기하지만 동작은에 따라 exe를 자체.
- 배치 파일의 경우 호출자 <batch-file>
가 종료되면 호출없이 제어가 호출자 일괄 처리로 돌아 가지 않습니다.
를 사용하면 CALL
캐럿 또는 퍼센트 기호가 포함 된 경우에만 배치 및 exe 파일에 대한 매개 변수를 변경할 수 있습니다.
call myProg param1 param^^2 "param^3" %%path%%
(일괄 파일 내에서)로 확장됩니다
myProg param1 param2 param^^3 <content of path>
start /wait /b cmd /c <batchfile.bat>
배치 파일이 같은 명령 창에서 다른 후 하나를 실행하기 때문에
call batchfile.bat
나는 그들이 일반적으로 똑같이 수행해야한다고 생각하지만 약간의 차이가 있습니다.
START
일반적으로 응용 프로그램을 시작하거나 지정된 파일 형식에 대한 기본 응용 프로그램을 시작하는 데 사용됩니다. 그렇게 START http://mywebsite.com
하지 않으면 그렇게하십시오 START iexplore.exe http://mywebsite.com
.
START myworddoc.docx
Microsoft Word를 시작하고 myworddoc.docx를 엽니 다. CALL myworddoc.docx
똑같은 일을하지만 ... START
창 상태와 그 성격에 대한 더 많은 옵션을 제공합니다. 또한 프로세스 우선 순위 및 선호도를 설정할 수 있습니다.
간단히 말해 start에서 제공하는 추가 옵션을 고려할 때 선택해야합니다.
START ["title"] [/D path] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED]
[/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL]
[/NODE <NUMA node>] [/AFFINITY <hex affinity mask>] [/WAIT] [/B]
[command/program] [parameters]
"title" Title to display in window title bar.
path Starting directory.
B Start application without creating a new window. The
application has ^C handling ignored. Unless the application
enables ^C processing, ^Break is the only way to interrupt
the application.
I The new environment will be the original environment passed
to the cmd.exe and not the current environment.
MIN Start window minimized.
MAX Start window maximized.
SEPARATE Start 16-bit Windows program in separate memory space.
SHARED Start 16-bit Windows program in shared memory space.
LOW Start application in the IDLE priority class.
NORMAL Start application in the NORMAL priority class.
HIGH Start application in the HIGH priority class.
REALTIME Start application in the REALTIME priority class.
ABOVENORMAL Start application in the ABOVENORMAL priority class.
BELOWNORMAL Start application in the BELOWNORMAL priority class.
NODE Specifies the preferred Non-Uniform Memory Architecture (NUMA)
node as a decimal integer.
AFFINITY Specifies the processor affinity mask as a hexadecimal number.
The process is restricted to running on these processors.
The affinity mask is interpreted differently when /AFFINITY and
/NODE are combined. Specify the affinity mask as if the NUMA
node's processor mask is right shifted to begin at bit zero.
The process is restricted to running on those processors in
common between the specified affinity mask and the NUMA node.
If no processors are in common, the process is restricted to
running on the specified NUMA node.
WAIT Start application and wait for it to terminate.
예를 들어 호출 할 때 call
와 Gary 가 start /wait
호출 할 때 유용한 차이점이 있습니다 .Gary 는 how-do-i-get-the-application-exit-code-from-a-windows-command-lineregsvr32.exe /s
call regsvr32.exe /s broken.dll
echo %errorlevel%
항상 0을 반환하지만
start /wait regsvr32.exe /s broken.dll
echo %errorlevel%
regsvr32.exe에서 오류 수준을 반환합니다
이것은 배치 파일을 병렬로 실행하는 동안 발견 한 것입니다 (다른 입력 매개 변수를 사용하여 동일한 bat 파일의 여러 인스턴스를 동시에).
LongRunningTask.exe라는 긴 작업을 수행하는 exe 파일이 있다고 가정하겠습니다.
bat 파일에서 직접 exe를 호출하면 LongRunningTask에 대한 첫 번째 호출 만 성공하지만 나머지는 "파일이 이미 프로세스에서 사용 중입니다"라는 오류가 발생합니다.
이 명령을 사용하는 경우 :
/ B / WAIT "" "LongRunningTask.exe" "parameters"시작
박쥐가 나머지 명령을 계속 실행하기 전에 작업이 끝날 때까지 기다리는 동안 박쥐와 exe의 여러 인스턴스를 실행할 수 있습니다. / B 옵션은 다른 창을 만드는 것을 피하기 위해 명령이 작동하려면 빈 따옴표가 필요합니다 (아래 참조 참조).
시작시 / WAIT를 사용하지 않으면 LongRunningTask가 배치 파일의 나머지 명령과 동시에 실행되므로 이러한 명령 중 하나에 LongRunningTask의 출력이 필요한 경우 문제가 발생할 수 있습니다.
재개 :
이것은 병렬로 실행할 수 없습니다 :
이것은 병렬로 실행되며 명령 출력과 나머지 bat 파일 사이에 데이터 종속성이없는 한 정상입니다.
병렬로 실행되고 작업이 완료 될 때까지 기다리므로 출력을 사용할 수 있습니다.
시작 명령에 대한 참조 : 프로그램 시작 후 콘솔을 열어 두지 않고 배치 파일에서 프로그램을 어떻게 실행할 수 있습니까?
요구
부모 배치 프로그램을 중지하지 않고 다른 배치 프로그램을 호출 합니다. call 명령은 레이블을 호출 대상으로 승인합니다. 스크립트 나 배치 파일 외부에서 사용할 때는 명령 줄에서 호출이 적용되지 않습니다. https://technet.microsoft.com/en-us/library/bb490873.aspx
스타트
지정된 프로그램이나 명령을 실행하기 위해 별도의 명령 프롬프트 창 을 시작합니다 . 매개 변수없이 사용하면 start는 두 번째 명령 프롬프트 창을 엽니 다. https://technet.microsoft.com/en-us/library/bb491005.aspx