batch-file
Escapar de personajes especiales
Buscar..
Introducción
En todos los cmd.exe
y DOS
versiones de DOS
, algunos caracteres están reservados para un uso específico (por ejemplo, redirección de comandos). Este tema tratará sobre cómo utilizar los caracteres especiales sin problemas.
Escapar con caret (^)
La mayoría de los caracteres especiales se pueden escapar utilizando el símbolo de intercalación ( ^
). Echa un vistazo al siguiente ejemplo.
echo > Hi
echo ^> Hi
Este primer comando no generaría > Hi
porque >
es un carácter especial, lo que significa redirigir la salida a un archivo. En este caso, el archivo se llama "Hola".
Sin embargo, en el segundo comando, > Hi
se emitirá sin ningún problema porque caret ( ^
) le dice al >
que deje de funcionar como el comando "redirigir la salida al archivo", ahora >
es solo un carácter normal.
Aquí hay una lista de caracteres especiales que se pueden escapar (tomar y editar desde la página de Rob van der Woude)
Personaje | Resultado Escapado | Observaciones |
---|---|---|
^ | ^^ | |
Y | ^ & | |
< | ^ < | |
> | ^> | |
| | ^ | | |
\ | ^ \ | |
! | ^^! | Solo es necesario cuando DelayedExpansion está activado |
Escapando del caret
Los carets se pueden apilar hasta el escape de otros carets, considere el siguiente ejemplo.
Entrada | Salida |
---|---|
^ & | Y |
^ ^ ^ & | ^ & |
^ ^ ^ ^ ^ & | ^^ & |
Nota: Los caretes en forma de negrita se escapan.
Problema de seguridad
Un poco fuera de tema aquí, pero esto es muy importante! ¡Un escape de careta no deseado al final del archivo podría causar una pérdida de memoria!
any-invalid-command-you-like-here ^
¡Este comando perdería toda la memoria, haciendo que el sistema sea completamente inutilizable ! Vea aquí para más información.
Personajes especiales FIND y FINDSTR
En find
y findstr
, hay algunos caracteres especiales que requieren cierta precaución.
ENCONTRAR
Solo hay un personaje que necesita escapar: "
cita. Para escapar, simplemente agregue otra cita junto a ella. Así que "
convierte en ""
. Bastante simple.
FINDSTR
Findstr
viene con un montón de personajes para escapar, así que ten mucho cuidado. Usando \
, podemos escapar de caracteres especiales. Aquí hay una lista de personajes especiales para escapar
Personaje | Resultado Escapado |
---|---|
\ | \\ |
El | \ [ |
] | \] |
" | \ " |
. | \. |
* | \ * |
? | \? |
Personajes especiales de FOR / F
PARA / F
En una declaración FOR /F
, algunos personajes deben escapar, aquí una lista (tomada y editada de la página de Rob van der Woude)
Personaje | Resultado Escapado | Observaciones |
---|---|---|
' | ^ | Solo es necesario en los corchetes de FOR /F , a menos que se especifique usebackq . |
` | ^ | Solo es necesario en los paréntesis de FOR /F , cuando se especifica usebackq |
, | ^, | ┒ |
; | ^; | ┃ |
= | ^ = | ┣ Debe escaparse entre paréntesis de FOR /F , incluso si está entre comillas dobles |
( | ^ ( | ┃ |
) | ^) | ┙ |
Caracteres extra especiales
Aquí hay una lista de otros caracteres especiales, que requieren (s) / pueden necesitar escapar, pero no se mencionan anteriormente.
Personaje | Resultado Escapado | Observaciones |
---|---|---|
% | %% | |
[LF] | ^ [LF] | Mark Stang menciona este truco en el grupo de noticias alt.msdos.batch . |
Escapar a través de la tubería
Cuando hay una expresión con una tubería, el cmd
comienza con dos hilos en ambos lados de la tubería y la expresión se analiza dos veces (para cada lado de la tubería), por lo que es necesario doblar el caret.
En el lado izquierdo:
echo ^^^&|more
En el lado derecho:
break|echo ^^^&