Skript 1:
Eingabe ("Remove Quotes.cmd" "Dies ist ein 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
Ausgabe (Es gibt keine,% 1 war NICHT leer, leer oder NULL):
Führen Sie ("Remove Quotes.cmd") ohne Parameter mit dem obigen Skript 1 aus
Ausgabe (% 1 ist leer, leer oder NULL):
Welcome!
Press any key to continue . . .
Hinweis: Wenn Sie eine Variable in einer IF ( ) ELSE ( )
Anweisung festlegen, steht sie DEFINED erst nach dem Beenden der "IF" -Anweisung zur Verfügung (es sei denn, "Delayed Variable Expansion" ist aktiviert; verwenden Sie nach der Aktivierung ein Ausrufezeichen "!" Anstelle von Prozent "%" Symbol}.
Beispielsweise:
Skript 2:
Eingabe ("Remove Quotes.cmd" "Dies ist ein 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
Ausgabe:
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>
Hinweis: Außerdem werden Anführungszeichen aus der Zeichenfolge entfernt.
Zum Beispiel (mit Skript 1 oder 2): C: \ Benutzer \ Test \ Dokumente \ Batchdateien> "Quotes.cmd entfernen" "Dies ist" ein "Test"
Ausgabe (Skript 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
Führen Sie ("Remove Quotes.cmd") ohne Parameter in Skript 2 aus:
Ausgabe:
Welcome!
Press any key to continue . . .
if "%1" == "" GOTO MyLabel
die Ausführung des Skripts nicht tödlich beendet, solange%1
eine gerade Anzahl von doppelten Anführungszeichen vorhanden ist. Ich sehe, dass eine ungerade Anzahl von doppelten Anführungszeichen%1
die Ausführung des Skripts mit diesem Fehler beendet:The syntax of the command is incorrect.
Die folgende Lösung, die eckige Klammern verwendet, um das Problem zu lösen, wurde als die richtige Antwort markiert, scheint aber nicht besser zu funktionieren . Diese Lösung schlägt auch mit demselben Fehler fehl, wenn%1
eine ungerade Anzahl von doppelten Anführungszeichen vorliegt .