IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

[Batch] Utiliser un point d'exclamation dans une sous-chaîne et dans une boucle


Sujet :

Scripts/Batch

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 14
    Points : 25
    Points
    25
    Par défaut [Batch] Utiliser un point d'exclamation dans une sous-chaîne et dans une boucle
    Bonjour à tous,

    J'ai un problème dont je ne trouve pas la solution...

    Je boucle sur un fichier. A chaque ligne, je fait une sous-chaîne de la ligne en cours. Mais certaines lignes qui contiennent des points d'exclamation posent problème à cause de l'expansion retardée...

    Quelque chose du genre :
    ne fonctionne pas correctement dans une boucle (d'où les "!"). Par exemple, si var1 est "test!" alors var2 donne "t" au lieu de "t!".

    Même après recherches sur des moteurs, je ne trouve pas ce que je veux car j'ai trop de mots-clés (expansion retardée, point d'exclamation, sous-chaîne)...

    Merci à tous

  2. #2
    Rédacteur
    Avatar de Viduc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2009
    Messages
    1 445
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Février 2009
    Messages : 1 445
    Points : 2 778
    Points
    2 778
    Billets dans le blog
    2
    Par défaut
    heu question bête mais tu fais ça en dos? vbs...?

    si tu fais un écho var1 lorsque tu lis ta ligne, il te met bien le ! ou pas?

  3. #3
    Membre averti

    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Décembre 2003
    Messages
    333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2003
    Messages : 333
    Points : 382
    Points
    382
    Billets dans le blog
    1
    Par défaut
    Personnellement, si tu as la réponse, je suis preneur, je n'ai pas encore trouvé la solution. Normalement le caractère d'échappement des caractères spéciaux en batch est le carret (^). Mais le script suivant ne marche pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    @echo off& cls
    	setlocal ENABLEDELAYEDEXPANSION
    	set alpha=^!kiki
    	echo !alpha!
    pause & exit
    affiche kiki au lieu de !kiki.

    Solution de contournement : coder en Perl ou VBS ou encore biaiser via utilisation de echo.exe -E (version unix de l'echo de la console, donc pas sensible aux même chose) sed et awk.

  4. #4
    Membre chevronné
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Points : 1 991
    Points
    1 991
    Par défaut
    Citation Envoyé par john.fender Voir le message
    Personnellement, si tu as la réponse, je suis preneur, je n'ai pas encore trouvé la solution. Normalement le caractère d'échappement des caractères spéciaux en batch est le carret (^). Mais le script suivant ne marche pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    @echo off& cls
    	setlocal ENABLEDELAYEDEXPANSION
    	set alpha=^!kiki
    	echo !alpha!
    pause & exit
    affiche kiki au lieu de !kiki.

    Solution de contournement : coder en Perl ou VBS ou encore biaiser via utilisation de echo.exe -E (version unix de l'echo de la console, donc pas sensible aux même chose) sed et awk.
    il vaut mieux d'éviter l'activation de l'expansion retardée de variables si tu parses des données dans un bloc.

    mais dans ton cas tu peux doubler simplement le signe caret "^"

  5. #5
    Membre averti

    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Décembre 2003
    Messages
    333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2003
    Messages : 333
    Points : 382
    Points
    382
    Billets dans le blog
    1
    Par défaut
    Ca marche, une connaissance en plus, meci

Discussions similaires

  1. Réponses: 2
    Dernier message: 03/09/2014, 14h00
  2. Recherche d'une sous-chaîne complète dans une chaîne de caractères
    Par missmiss89 dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 06/07/2011, 16h26
  3. récupérer une sous-chaîne à partie d'une chaîne
    Par aroua dans le forum Général Java
    Réponses: 8
    Dernier message: 18/04/2008, 15h36
  4. Surligner une sous-chaine recherchée dans un TMemo
    Par zemeilleurofgreg dans le forum Delphi
    Réponses: 2
    Dernier message: 30/06/2006, 12h07
  5. Réponses: 28
    Dernier message: 22/09/2005, 11h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo