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 MyLabeldie Ausführung des Skripts nicht tödlich beendet, solange%1eine gerade Anzahl von doppelten Anführungszeichen vorhanden ist. Ich sehe, dass eine ungerade Anzahl von doppelten Anführungszeichen%1die 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%1eine ungerade Anzahl von doppelten Anführungszeichen vorliegt .