2009-11-16 11 views
5

J'ai écrit un programme c qui extrait les arguments de la ligne de commande sous Windows. L'un des arguments est une expression régulière. Donc, je dois récupérer des caractères spéciaux tels que « (,. », Etc., mais traite cmd.exe « (» comme un caractère spécial.Comment saisir un caractère spécial dans cmd?

Comment pourrais-je entrer ces caractères spéciaux?

merci.

Répondre

8

vous pouvez mettre les arguments entre guillemets:

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

Bien que je ne satisferaient pas que les parenthèses causent des problèmes à moins que vous utilisez des blocs pour des instructions conditionnelles ou des boucles dans un fichier batch La gamme habituelle de caractères. qui sont traités spécialement par la coquille et ont besoin de citer ou d'échapper sont:

& | > <^

Si vous utilisez ceux de votre expression régulière, vous avez besoin des guillemets, ou échapper à ces personnages:

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

(^ est le caractère d'échappement qui provoque le caractère suivant à ne pas être interprété par le shell, mais à la place utilisé littéralement)

+1

Je suppose que '^' doit également s'échapper. Vous devriez ajouter cela à votre liste. – quamrana

+0

Oui, désolé. Oublié que :-) – Joey

9

Vous pouvez généralement préfixer n'importe quel caractère avec ^ pour désactiver sa nature spéciale. Par exemple:

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> 

C'est un caret suivi d'un ENTRER après le mot do.

+0

Notez que vous n'avez pas besoin d'échapper les parenthèses à moins que vous n'utilisiez ceci dans un bloc conditionnel ou en boucle tel que 'si foo == bar (echo^(foo ^))' – Joey

Questions connexes