스크립트 1 :
입력 ( "Quotes.cmd 제거" "테스트입니다")
@ECHO OFF
REM Set "string" variable to "first" command line parameter
SET STRING=%1
REM Remove Quotes [Only Remove Quotes if NOT Null]
IF DEFINED STRING SET STRING=%STRING:"=%
REM IF %1 [or String] is NULL GOTO MyLabel
IF NOT DEFINED STRING GOTO MyLabel
REM OR IF "." equals "." GOTO MyLabel
IF "%STRING%." == "." GOTO MyLabel
REM GOTO End of File
GOTO :EOF
:MyLabel
ECHO Welcome!
PAUSE
출력 (없음, % 1은 (는) 비어 있지 않거나 비어 있거나 NULL 임) :
위의 스크립트로 매개 변수없이 실행 ( "Quotes.cmd 제거") 1
출력 (% 1이 비어 있거나 비어 있거나 NULL 임) :
Welcome!
Press any key to continue . . .
참고 : 내부에 변수를 설정하면 IF ( ) ELSE ( )
명령문 "IF"문을 종료 할 때까지 "DEFINED 변수 확장"을 사용하지 않는 한 DEFINED에서 사용할 수 없습니다. 일단 활성화되면 "!"대신 느낌표 "!"를 사용하십시오. 퍼센트 "%"기호}.
예를 들면 다음과 같습니다.
스크립트 2 :
입력 ( "Quotes.cmd 제거" "테스트입니다")
@ECHO OFF
SETLOCAL EnableDelayedExpansion
SET STRING=%0
IF 1==1 (
SET STRING=%1
ECHO String in IF Statement='%STRING%'
ECHO String in IF Statement [delayed expansion]='!STRING!'
)
ECHO String out of IF Statement='%STRING%'
REM Remove Quotes [Only Remove Quotes if NOT Null]
IF DEFINED STRING SET STRING=%STRING:"=%
ECHO String without Quotes=%STRING%
REM IF %1 is NULL GOTO MyLabel
IF NOT DEFINED STRING GOTO MyLabel
REM GOTO End of File
GOTO :EOF
:MyLabel
ECHO Welcome!
ENDLOCAL
PAUSE
산출:
C:\Users\Test>"C:\Users\Test\Documents\Batch Files\Remove Quotes.cmd" "This is a Test"
String in IF Statement='"C:\Users\Test\Documents\Batch Files\Remove Quotes.cmd"'
String in IF Statement [delayed expansion]='"This is a Test"'
String out of IF Statement='"This is a Test"'
String without Quotes=This is a Test
C:\Users\Test>
참고 : 문자열 내부에서 따옴표도 제거합니다.
예 (스크립트 1 또는 2 사용) : C : \ Users \ Test \ Documents \ Batch Files> "Quotes.cmd 제거" ""a "테스트"
출력 (스크립트 2) :
String in IF Statement='"C:\Users\Test\Documents\Batch Files\Remove Quotes.cmd"'
String in IF Statement [delayed expansion]='"This is "a" Test"'
String out of IF Statement='"This is "a" Test"'
String without Quotes=This is a Test
스크립트 2의 매개 변수없이 ( "Quotes.cmd 제거")를 실행하십시오.
산출:
Welcome!
Press any key to continue . . .
if "%1" == "" GOTO MyLabel
한 스크립트 실행을 치명적으로 죽이지 않습니다%1
. 홀수의 큰 따옴표%1
가이 오류로 스크립트 실행을 죽이는 것을 알 수 있습니다.The syntax of the command is incorrect.
대괄호를 사용하여 문제를 해결하는 아래 솔루션은 정답으로 표시되었지만 더 잘 수행되지 않는 것 같습니다. .%1
홀수의 큰 따옴표 가있을 때도 같은 오류로 해당 솔루션이 실패 합니다.