スクリプト1:
入力( "Remove Quotes.cmd" "This is a Test")
@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ではありませんでした):
上記のスクリプトを使用して、パラメーターなしで( "Remove Quotes.cmd")を実行します1
出力(%1は空白、空、またはNULL):
Welcome!
Press any key to continue . . .
注:変数を IF ( ) ELSE ( )
ステートメント、「IF」ステートメントを終了するまでを定義できません(「遅延変数拡張」が有効になっていない限り、有効になったら、代わりに感嘆符「!」を使用してください。パーセント「%」記号}。
例えば:
スクリプト2:
入力( "Remove Quotes.cmd" "This is a Test")
@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> "Remove Quotes.cmd" "This is" a "Test"
出力(スクリプト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でパラメーターなしで実行( "Remove Quotes.cmd")します。
出力:
Welcome!
Press any key to continue . . .
if "%1" == "" GOTO MyLabel
限り、スクリプトの実行を致命的に強制終了しません%1
。奇数の二重引用符が%1
このエラーでスクリプトの実行を強制終了していることがわかります。The syntax of the command is incorrect.
問題を解決するために角かっこを使用する以下の解決策は正解としてマークされていますが、それはそれ以上うまく行っていないようです。そのソリューションも%1
奇数の二重引用符があると同じエラーで失敗します。