명령: "SHIFT" 켜짐 Windows 12, 11, 10, .. , MS Server 2025, 2022, 2019, .. 사용 가능
명령의 예 "SHIFT"
그만큼
`SHIFT`Windows 명령 프롬프트의 명령은 배치 파일에서 매개변수의 위치를 이동하는 데 사용됩니다. 다음은
`SHIFT`-명령:
예 1: 배치 파일의 매개변수를 통해 반복:
@ECHO OFF
:LOOP
IF "%1"=="" GOTO END
ECHO Parameter: %1
SHIFT
GOTO LOOP
:END
설명: 이 예에서는 루프를 사용하여 배치 파일의 모든 매개 변수를 반복하고 하나씩 표시합니다. 명령
`SHIFT`매개변수의 위치를 이동하는 데 사용됩니다.
예 2: 배치 파일의 매개변수 합계:
@ECHO OFF
SET 총=0
:ADD_LOOP
IF "%1"=="" GOTO END_ADD
SET /A 총+= %1
SHIFT
GOTO ADD_LOOP
:END_ADD
ECHO 총: %총%
설명: 이 예에서는 매개변수가 루프로 합산됩니다. 명령
`SHIFT`매개변수 위치를 이동하고
`SET /A`합계를 업데이트하는 데 사용됩니다.
예 3: 중첩 루프 및 SHIFT 작업:
@ECHO OFF
:OUTER_LOOP
IF "%1"=="" GOTO END_OUTER
ECHO Outer Parameter: %1
SHIFT
:INNER_LOOP
IF "%1"=="" GOTO END_INNER
ECHO Inner Parameter: %1
SHIFT
GOTO INNER_LOOP
:END_INNER
GOTO OUTER_LOOP
:END_OUTER
설명: 이 예에서는
`SHIFT`중첩 루프에서 사용할 수 있습니다. 외부 루프는 외부 매개변수를 처리하고 내부 루프는 내부 매개변수를 처리합니다.
예 4: SHIFT를 사용하여 매개변수 건너뛰기:
@ECHO OFF
SHIFT
SHIFT
ECHO 제삼 Parameter: %1
설명: 여기서 처음 두 매개변수는 두 개의 연속된 매개변수와 함께 사용됩니다.
`SHIFT`명령은 건너뛰고 세 번째 매개변수가 표시됩니다.
예 5: 매개변수 확인 및 처리:
@ECHO OFF
:PARAM_LOOP
IF "%1"=="" GOTO END_PARAM
IF /I "%1"=="/DEBUG" (
ECHO Debug-모드 활성화됨.
SHIFT
GOTO PARAM_LOOP
)
ECHO 프로세스 Parameter: %1
SHIFT
GOTO PARAM_LOOP
:END_PARAM
설명: 이 예에서는 첫 번째 매개변수가
"/DEBUG"인지 확인합니다. 이 경우 메시지가 발행되고 매개변수를 건너뜁니다.
그만큼
`SHIFT`명령은 다양한 수의 매개변수를 처리해야 하는 배치 스크립트에 특히 유용합니다. 참고하세요
`SHIFT`매개변수 목록의 내용을 이동하고 매개변수 위치를 다시 할당합니다. 그러므로 중요하다
`SHIFT`배치 스크립트의 논리에 따라 현명하게 사용하십시오.
"SHIFT" Microsoft Windows 도움말에서 발췌
Microsoft Windows [Version 10.0.19045.3693]
(c) Copyright 1985-2023 Microsoft Corp.
C:\\WINDOWS>
일괄 파일에서 바꿀 수 있는 매개 변수의 위치를 바꿉니다.
SHIFT [/n]
명령 확장을 사용하면, SHIFT 명령은 n(n은 0에서 8사이의 수)째
인수에서 이동을 시작하는 /n 스위치를 지원합니다. 예를 들어:
SHIFT /2
는 %3을 %2로, %4를 %3으로, %1을 %0으로 이동합니다.
중요 정보, "SHIFT" 명령에 대한 팁
사용할 때
`SHIFT`배치 스크립트의 명령에는 고려해야 할 몇 가지 중요한 측면이 있습니다.
1.
매개변수 손실: `SHIFT`그러면 매개변수 목록의 매개변수 위치가 왼쪽으로 이동됩니다. 이는 첫 번째 매개변수의 값(
`%1`)를 두 번째 매개변수(
`%2`)가 대체되면 두 번째 매개변수는 세 번째 매개변수(
`%3`), 기타 등등. 마지막 매개변수의 값(
`%9`)이 손실되고 값이
`%0`(스크립트 이름)은 변경되지 않습니다.
2.
교대 횟수: 다음을 수행할 수 있습니다.
`SHIFT`숫자 매개변수가 9개(
`%0`~까지
`%9`) 제공합니다. 9번째 교대 이후에는 9번째 매개변수의 값이 손실된 상태로 유지됩니다.
3.
루프 내 SHIFT: 다음과 같은 경우
`SHIFT`루프에서는 다른 매개변수가 없는 경우 무한 루프를 방지하기 위해 조건이 제대로 검사되었는지 확인해야 합니다.
@ECHO OFF
:LOOP
IF "%1"=="" GOTO END_LOOP
ECHO Parameter: %1
SHIFT
GOTO LOOP
:END_LOOP
4.
중첩 루프에서 SHIFT: 다음과 같은 경우
`SHIFT`중첩 루프에서는 루프의 매개변수를 이동하면 중첩 루프의 매개변수 위치에도 영향을 미칩니다.
@ECHO OFF
:OUTER_LOOP
IF "%1"=="" GOTO END_OUTER
ECHO Outer Parameter: %1
SHIFT
:INNER_LOOP
IF "%1"=="" GOTO END_INNER
ECHO Inner Parameter: %1
SHIFT
GOTO INNER_LOOP
:END_INNER
GOTO OUTER_LOOP
:END_OUTER
5.
지연된 확장 및 이동: `SHIFT`지연된 확장과 함께 (
`ENABLEDELAYEDEXPANSION`), 참고하세요
`!`지연된 확장에는 사용되지 않습니다.
`%`.
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET COUNT=0
:LOOP
IF "!1"=="" GOTO END_LOOP
SET /A COUNT+=1
SHIFT
GOTO LOOP
:END_LOOP
ECHO 수 Parameter: %COUNT%
순서와 빈도를 고려하는 것이 중요합니다.
`SHIFT`매개변수가 예상대로 이동되고 정보가 손실되지 않도록 주의 깊게 계획하십시오. 빈 매개변수도 확인합니다(
`IF "%1"==""`)는 무한 루프를 피하는 데 중요합니다.