2009-11-16 16 views
5

Ho scritto un programma c che recupera argomenti dalla riga di comando in Windows. Uno degli argomenti è un'espressione regolare. Così ho bisogno di recuperare i caratteri speciali come "(,.", Ecc, ma cmd.exe tratta "(" come un carattere speciale.Come inserire caratteri speciali in cmd?

come potrei inserire questi caratteri speciali?

grazie.

risposta

8

si può mettere gli argomenti tra virgolette:

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

Anche se non vorrei pensare che tra parentesi causano problemi a meno che non siete utilizzando blocchi di istruzioni condizionali o loop in un file batch il solito carico di personaggi.che sono trattati appositamente dalla shell e la necessità citando o fuga sono:

& | > <^

Se si utilizzano quelli nella vostra espressione regolare, allora avete bisogno di citazioni, o fuggire quei personaggi:

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

(^ è il carattere di escape che causa il seguente carattere di non essere interpretato dalla shell ma invece utilizzato letteralmente)

+1

Suppongo che '^' abbia anche bisogno di eseguire l'escape. Dovresti aggiungerlo alla tua lista. – quamrana

+0

Sì, mi dispiace. Hai dimenticato :-) – Joey

9

In genere è possibile aggiungere un prefisso a qualsiasi carattere con ^ per disattivare la sua natura speciale. Per esempio:

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> 

Questo è un accento circonflesso seguito da un INVIO dopo la parola do.

+0

Nota che non è necessario eseguire l'escape delle parentesi a meno che non lo si utilizzi in un blocco condizionale o di ciclo come 'if foo == bar (echo^(foo ^))' – Joey