Komut Dosyası 1:
Girdi ("Kaldır Quotes.cmd" "Bu bir Testtir")
@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
Çıktı (Yok,% 1 boş, boş veya NULL DEĞİLDİR):
Yukarıdaki komut dosyası ile herhangi bir parametre olmadan çalıştırın ("Kaldır Quotes.cmd") 1
Çıktı (% 1 boş, boş veya NULL):
Welcome!
Press any key to continue . . .
Not: Bir değişkenin içine IF ( ) ELSE ( )
ifadenin , "IF" ifadesinden çıkana kadar DEFINED tarafından kullanılamaz ("Gecikmeli Değişken Genişletme" etkinleştirilmedikçe; etkinleştirildikten sonra, yerine bir ünlem işareti "!" Kullanın yüzde "%" simgesi}.
Örneğin:
Komut Dosyası 2:
Girdi ("Kaldır Quotes.cmd" "Bu bir Testtir")
@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
Çıktı:
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>
Not: Ayrıca dizenin içindeki tırnak işaretlerini de kaldıracaktır.
Örneğin (komut dosyası 1 veya 2'yi kullanarak): C: \ Users \ Test \ Documents \ Batch Files> "Quotes.cmd dosyasını kaldır" "Bu" bir "Test"
Çıktı (Kod 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
Komut Dosyası 2'de herhangi bir parametre olmadan ("Quotes.cmd" dosyasını yürütün):
Çıktı:
Welcome!
Press any key to continue . . .
if "%1" == "" GOTO MyLabel
olduğu sürece komut dosyasının yürütülmesini ölümcül bir şekilde öldürmez%1
. Görüyorum ki çift tırnak çift sayı%1
bu hatayla komut yürütülmesini öldürür:The syntax of the command is incorrect.
Sorunu çözmek için köşeli ayraç kullanan aşağıdaki çözüm doğru cevap olarak işaretlenmiş ama daha iyi yapıyor gibi görünmüyor . Tek%1
bir çift tırnak işareti olduğunda bu çözüm de aynı hatayla başarısız olur .