2009-11-16 54 views
5

He escrito un programa c que recupera argumentos de la línea de comandos en Windows. Uno de los argumentos es una expresión regular. Así que necesito para recuperar caracteres especiales como "(,.", Etc., pero trata de cmd.exe "(" como un carácter especial.Cómo ingresar caracteres especiales en cmd?

¿Cómo podría ingresar estas carácter especial?

gracias.

Respuesta

8

usted puede poner los argumentos entre comillas:

myprogram.exe "(this is some text, with special characters.)" 

Aunque no asumiría que los paréntesis causan problemas a menos que está utilizando bloques de sentencias condicionales o bucles en un archivo por lotes La selección habitual de caracteres. que reciben un tratamiento especial por la cáscara y la necesidad de citar o escapar son:

& | > <^

Si utiliza los de su expresión regular, entonces usted necesita cotizaciones, o escapar de los personajes:

myprogram "(.*)|[a-f]+" 
myprogram (.*)^|[a-f]+ 

(^ es el carácter de escape que hace que el siguiente carácter a no ser interpretada por el shell pero en su lugar utiliza literalmente)

+1

Supongo que '^' también necesita escaparse. Debe agregar eso a su lista. – quamrana

+0

Sí, lo siento. Olvidé que :-) – Joey

9

general usted puede prefijar cualquier carácter con ^ para desactivar su naturaleza especial. Por ejemplo:

Microsoft Windows XP [Version 5.1.2600] 
(C) Copyright 1985-2001 Microsoft Corp. 

C:\Documents and Settings\Pax>echo No ^<redirection^> here and can also do^
More? multi-line, ^(parentheses^) and ^^ itself 
No <redirection> here and can also do multi-line, (parentheses) and^itself 

C:\Documents and Settings\Pax> 

Eso es un símbolo de intercalación seguido de una entrada después de la palabra do.

+0

Tenga en cuenta que no necesita escaparse entre paréntesis a menos que esté usando esto en un bloque condicional o de bucle como 'if foo == bar (echo^(foo ^))' – Joey

Cuestiones relacionadas