สคริปต์ 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 ไม่ว่างเปล่าว่างเปล่าหรือเป็นโมฆะ):
รัน ("Remove Quotes.cmd") โดยไม่มีพารามิเตอร์ใด ๆ ด้วยสคริปต์ด้านบน 1
เอาท์พุท (% 1 ว่างเปล่าว่างเปล่าหรือ NULL):
Welcome!
Press any key to continue . . .
หมายเหตุ: หากคุณตั้งค่าตัวแปรภายในIF ( ) ELSE ( )
คำสั่งจะไม่สามารถกำหนด DEFINED จนกว่าจะออกจากคำสั่ง "IF" (เว้นแต่ว่าจะเปิดใช้งาน "การขยายตัวแปรล่าช้า" เปิดใช้งานเมื่อใช้เครื่องหมายอัศเจรีย์ "!" แทน) เครื่องหมายเปอร์เซ็นต์ "%"}
ตัวอย่างเช่น:
บทที่ 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> "Remove 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
ดำเนินการ ("ลบ Quotes.cmd") โดยไม่มีพารามิเตอร์ใด ๆ ในสคริปต์ 2:
เอาท์พุท:
Welcome!
Press any key to continue . . .
if "%1" == "" GOTO MyLabel
จะไม่ฆ่าการดำเนินการของสคริปต์อย่างร้ายแรงตราบใดที่%1
ยังมีเครื่องหมายคำพูดคู่ ฉันเห็นว่ามีเครื่องหมายคำพูดคู่จำนวนมาก%1
ฆ่าการเรียกใช้สคริปต์ด้วยข้อผิดพลาดนี้:The syntax of the command is incorrect.
การแก้ปัญหาด้านล่างที่ใช้วงเล็บเหลี่ยมเพื่อแก้ปัญหาได้รับการทำเครื่องหมายว่าเป็นคำตอบที่ถูกต้อง แต่ดูเหมือนจะไม่ดีขึ้น . การแก้ปัญหานั้นก็ล้มเหลวด้วยข้อผิดพลาดเดียวกันเมื่อ%1
มีจำนวนคู่ของคำพูดคู่