Skrip 1:
Input ("Hapus Quotes.cmd" "Ini Uji")
@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
Output (Tidak ada,% 1 TIDAK kosong, kosong, atau NULL):
Jalankan ("Hapus Quotes.cmd") tanpa parameter apa pun dengan skrip di atas 1
Output (% 1 kosong, kosong, atau NULL):
Welcome!
Press any key to continue . . .
Catatan: Jika Anda mengatur variabel di dalam sebuah IF ( ) ELSE ( )
pernyataan, itu tidak akan tersedia untuk DITETAPKAN sampai setelah itu keluar dari pernyataan "JIKA" (kecuali "Ekspansi Variabel Tertunda" diaktifkan; setelah diaktifkan gunakan tanda seru "!" Sebagai ganti variabel simbol persen "%"}.
Sebagai contoh:
Skrip 2:
Input ("Hapus Quotes.cmd" "Ini Uji")
@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
Keluaran:
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>
Catatan: Ini juga akan menghapus tanda kutip dari dalam string.
Sebagai Contoh (menggunakan skrip 1 atau 2): C: \ Users \ Test \ Documents \ Batch Files> "Remove Quotes.cmd" "Ini adalah" a "Test"
Output (Script 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
Jalankan ("Hapus Quotes.cmd") tanpa parameter apa pun di Skrip 2:
Keluaran:
Welcome!
Press any key to continue . . .
if "%1" == "" GOTO MyLabel
tidak mematikan eksekusi skrip selama%1
memiliki jumlah genap dari tanda kutip ganda. Saya melihat bahwa jumlah ganjil dari tanda kutip ganda dalam%1
membunuh eksekusi skrip dengan kesalahan ini:The syntax of the command is incorrect.
Solusi di bawah ini yang menggunakan tanda kurung siku untuk menyelesaikan masalah telah ditandai sebagai jawaban yang benar tetapi sepertinya tidak ada yang lebih baik . Solusi itu juga gagal dengan kesalahan yang sama ketika%1
memiliki jumlah tanda kutip ganda ganjil.