Guión 1:
de entrada ("Eliminar Quotes.cmd" "Esto es una prueba")
@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
salida (No hay ninguno ,% 1 no estaba en blanco, vacío, o NULL):
Run ("Eliminar Quotes.cmd") sin ningún parámetro con el guión anterior 1
de salida (1% está en blanco, vacío, o NULL):
Welcome!
Press any key to continue . . .
Nota: Si configura una variable dentro de una declaración IF () ELSE ()
, no estará disponible para DEFINIDO hasta que salga de la instrucción "IF" (a menos que esté habilitada la "Expansión de la variable retrasada"; una vez habilitado use un signo de exclamación "!" en lugar del porcentaje "%" símbolo}.
Por ejemplo:
Guión 2:
de entrada ("Eliminar Cotizaciones.cmd" "Esto es una prueba")
@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
Salida:
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:. Además, eliminará las cotizaciones desde el interior de la cadena
por ejemplo (usando la escritura 1 o 2): C: \ Users \ Test \ Documents \ Batch Files> "Remove Quotes.cmd" "Esto es" a "Test"
Outp UT (Guión 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
Ejecutar ("Eliminar Quotes.cmd") sin ningún parámetro en Script 2:
Salida:
Welcome!
Press any key to continue . . .
En mis sistemas (Windows 2003, así como Windows 7), 'si "1%" == "" GOTO MyLabel' no mata fatalmente la ejecución del script, siempre y cuando'% 1' tiene un número par de comillas dobles. Veo que un número impar de comillas dobles en '% 1' mata la ejecución del script con este error:' La sintaxis del comando es incorrecta. La solución a continuación que usa corchetes para resolver el problema se ha marcado como la respuesta correcta, pero no parece estar mejorando. Esa solución también falla con el mismo error cuando '% 1' tiene un número impar de comillas dobles. –
@SusamPal Interesante. Pruebe la versión de paréntesis debajo de él y vea si eso funciona. Ese que probé más. Acabo de actualizar la respuesta aceptada hace un par de días. – blak3r
[La respuesta de Dan Story] (http://stackoverflow.com/a/2541820/303363) parece funcionar bien. Usé la versión usando corchetes. –