Comment puis-je échapper à un point d'exclamation ! dans cmd scripts?
Quand j'ai setlocal ENABLEDELAYEDEXPANSION
situé dans un cmd script est il possible que je peux échapper à une ! que je veux utiliser comme paramètre à une commande?
@echo off
setlocal ENABLEDELAYEDEXPANSION
echo I want to go out with a bang!
echo I still want to go out with a bang^!
Vous devez vous connecter pour publier un commentaire.
C'est ce que j'ai trouvé (^^)
Une remarque additionnelle à la réponse de FrVaBe.
Normalement le
^^!
fonctionne, mais dans des citations vous avez seulement besoin^!
à la place.C'est une conséquence du mécanisme d'échappement du lot de l'analyseur.
D'abord l'analyseur analyse d'une ligne et l'accent circonflexe s'échappe le caractère suivant, et dans ce cas, il a un effet
&|<>()"<linefeed>
, mais uniquement à l'extérieur des guillemets, comme à l'intérieur des guillemets tous les personnages sont "normaux" et le signe lui-même n'a aucun effet.Avec l'expansion retardée supplémentaires analyser l'étape suivante, il est le signe aussi d'un caractère d'échappement pour le caractère suivant, mais ne concerne que la
!
et^
, et les citations sont ignorés dans cette analyse de l'étape.Cette étape supplémentaire sera exécuté seulement si il existe au moins un
!
dans la ligne.---- SORTIE ------
MODIFIER
Ici est légèrement modifié pour l'exemple qui illustre le mieux les divers échapper permutations qui sont nécessaires, selon le contexte. Le seul cas qui nécessite d'inhabituel s'échapper, est le dernier exemple lors de l'expansion retardée est sur, et il existe au moins un
!
sur la ligne.-- OUTPUT --
Veuillez trouver ci-dessous l'exemple, à la façon dont nous pouvons utiliser le point d'exclamation variable dans DISABLEDELAYEDEXPANSION et ENABLEDELAYEDEXPANSION état.
Grâce. Pour ajouter à ce précieux point, si le script contient une variable dont la valeur contient un "!", ensuite, l'approche suivante sera de rendre cette valeur-est: