Script 1:
Input ("Rimuovi Quotes.cmd" "Questo è un 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
Output (nessuno,% 1 NON era vuoto, vuoto o NULL):
Esegui ("Rimuovi Quotes.cmd") senza parametri con lo script sopra 1
Output (% 1 è vuoto, vuoto o NULL):
Welcome!
Press any key to continue . . .
Nota: se si imposta una variabile all'interno di IF ( ) ELSE ( )
un'istruzione, questa non sarà disponibile su DEFINED fino a quando non esce dall'istruzione "IF" (a meno che non sia abilitata "Espansione ritardata variabile"; una volta abilitata utilizzare un punto esclamativo "!" Al posto del simbolo "%" percentuale}.
Per esempio:
Script 2:
Input ("Rimuovi Quotes.cmd" "Questo è un 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
Produzione:
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>
Nota: rimuoverà anche le virgolette dall'interno della stringa.
Ad esempio (utilizzando lo script 1 o 2): C: \ Users \ Test \ Documents \ Batch Files> "Rimuovi Quotes.cmd" "Questo è" un "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
Eseguire ("Rimuovi Quotes.cmd") senza parametri nello Script 2:
Produzione:
Welcome!
Press any key to continue . . .
if "%1" == "" GOTO MyLabel
non uccide fatalmente l'esecuzione dello script fintanto che%1
ha un numero pari di virgolette. Vedo che un numero dispari di virgolette doppie%1
uccide l'esecuzione dello script con questo errore:The syntax of the command is incorrect.
la soluzione che segue che usa parentesi quadre per risolvere il problema è stata contrassegnata come la risposta corretta ma non sembra andare meglio . Quella soluzione fallisce anche con lo stesso errore quando%1
ha un numero dispari di virgolette doppie.