Script 1:
Entrée ("Remove Quotes.cmd" "Ceci est 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
Sortie (il n'y en a pas,% 1 n'était PAS vide, vide ou NULL):
Exécutez ("Remove Quotes.cmd") sans aucun paramètre avec le script ci-dessus 1
Sortie (% 1 est vide, vide ou NULL):
Welcome!
Press any key to continue . . .
Remarque: Si vous définissez une variable dans une IF ( ) ELSE ( )
instruction, elle ne sera disponible pour DEFINED qu'après avoir quitté l'instruction "IF" (sauf si "Expansion de variable retardée" est activée; une fois activée, utilisez un point d'exclamation "!" À la place de la symbole de pourcentage "%"}.
Par exemple:
Script 2:
Entrée ("Remove Quotes.cmd" "Ceci est 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
Production:
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>
Remarque: Il supprimera également les guillemets de l'intérieur de la chaîne.
Par exemple (en utilisant le script 1 ou 2): C: \ Users \ Test \ Documents \ Batch Files> "Remove Quotes.cmd" "Ceci est" un "Test"
Sortie (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
Exécutez ("Remove Quotes.cmd") sans aucun paramètre dans le script 2:
Production:
Welcome!
Press any key to continue . . .
if "%1" == "" GOTO MyLabel
ne tue pas fatalement l'exécution du script tant qu'il%1
a un nombre pair de guillemets doubles. Je vois qu'un nombre impair de guillemets doubles%1
tue l'exécution du script avec cette erreur:The syntax of the command is incorrect.
La solution ci-dessous qui utilise des crochets pour résoudre le problème a été marquée comme la bonne réponse mais elle ne semble pas faire mieux . Cette solution échoue également avec la même erreur lorsqu'il y%1
a un nombre impair de guillemets doubles.