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 :

Recherche chaine de caractere dans spool puis passage en variable VRAI/FAUX


Sujet :

Scripts/Batch

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 17
    Points : 11
    Points
    11
    Par défaut Recherche chaine de caractere dans spool puis passage en variable VRAI/FAUX
    Bonjour,

    Je vous explique mon problème, actuellement je récupère le spool en variable (%1) d'une édition matricielle et le renvoi vers un batch.
    J'effectue le nettoyage du spool avec filt_escseq.exe et sed.exe (je retire le +;!;------) cela fonctionne mais je souhaite faire une condition c'est a dire faire un IF si dans le contenu du spool je trouve une chaine de caractères particulière.

    Voici mon batch actuel:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    @echo off
    Set FILTRE=c:\Starjet\forms\Garage\batch\filt_escseq.exe
    Set SED=c:\Starjet\forms\Garage\batch\sed.exe
    %SED% -e 's/!/ /g; s/+/ /g; /------/g; /------/d' %1 > %1_sed.dat
    start /wait %FILTRE% %1_sed.dat %1_fl.dat
    start /wait c:\starjet\bin32\starpage /cC:\Starjet\forms\Garage\st.sp /d71.201 %1_fl.dat
    Je pensais reutiliser SED mais je ne vois pas comment sortir une variable a VRAI ou FAUX en fonction de la chaine.

    Si vous avez une idee.

    Merci

  2. #2
    Expert éminent
    Avatar de shawn12
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Avril 2006
    Messages
    3 368
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2006
    Messages : 3 368
    Points : 6 800
    Points
    6 800
    Par défaut
    Tu as un peu d'aide sur l'utilisation du IF sur cette page : http://windows.developpez.com/cours/...e=page_25#LXXV
    ou en tapant ceci dans l'invite de commande :

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    Merci mais mon problème n'est pas le IF, je ne suis pas assez explicite, en effet je cherche le programme ou la commande qui permet de faire une recherche dans un fichier ou spool d'une chaine de caractère et et d'initialiser une variable a Vrai si je trouve cette chaine.

    Pour détailler mon projet actuellement je capture des spools et dans ces derniers se trouve en haut a droite le nom du programme d'édition ainsi pour certaines éditions je dois retirer les +;------;! (qui constituent les cadres) et pour d'autres je dois les conserver.

    Merci

  4. #4
    Rédacteur/Modérateur
    Avatar de NorocBzh
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Juin 2008
    Messages
    834
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 834
    Points : 1 265
    Points
    1 265
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for /r %repertoire% %%i in (%fichier%) do ( 
    	for /f "delims=" %%j in ('type "%%i" ^|findstr  "%ta_chaine%"') do set var=VRAI
    )
    ?

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    Merci !!!

    Maintenant j'ai bien avance :-) mais j'ai encore un petit problème en effet il me casse la chaine et cherche chaque "mot" et donc mes impressions se retrouvent faussées, même si je fais:

    Set Chaine=BON DE CLOTURE SUR FACTURATION
    ou
    Set Chaine="BON DE CLOTURE SUR FACTURATION"
    ou
    Set Chaine='BON DE CLOTURE SUR FACTURATION'

    Voici le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    @echo off
    Set IMPRIMANTE=69.221
    Set MATRICIELLE=FAUX
    Set CHAINE=BON DE CLOTURE SUR FACTURATION
    Set FILTRE=c:\Starjet\forms\Garage\batch\filt_escseq.exe
    Set SED=c:\Starjet\forms\Garage\batch\sed.exe
    
    for %%i in (%1) do (
    	for /f "delims=" %%j in ('type "%%i" ^|findstr  "%CHAINE%"') do set MATRICIELLE=VRAI
    )
    
    If %MATRICIELLE% == FAUX ( 
    	%SED% -e 's/!/ /g; s/+/ /g; /------/g; /------/d' %1 > %1_sed.dat
    	start /wait %FILTRE% %1_sed.dat %1_fl.dat
    	start /wait c:\starjet\bin32\starpage /cC:\Starjet\forms\Garage\sm.sp /d%IMPRIMANTE% %1_fl.dat
    )
    
    IF %MATRICIELLE% == VRAI ( 
    	start /wait %FILTRE% %1 %1_fl.dat
    	start /wait c:\starjet\bin32\starpage /cC:\Starjet\forms\Garage\sm.sp /d%IMPRIMANTE% %1_fl.dat
    )
    Petite question en plus est-il possible de declarer plusieurs variables par exemple:
    Set Chaine0=TOTO
    Set Chaine0=TITI
    Set Chaine0=TATA

    Et si oui puis-je faire dans mon code ceci:
    for /f "delims=" %%j in ('type "%%i" ^|findstr "%CHAINE0%;%CHAINE1%"') do set


    Merci

  6. #6
    Rédacteur/Modérateur
    Avatar de NorocBzh
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Juin 2008
    Messages
    834
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 834
    Points : 1 265
    Points
    1 265
    Par défaut
    Pour rechercher une chaine de caractères exacte, il faut rajouter le commutateur /X à findstr je crois.

    findstr /?

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    Merci ne effet il faut ajouter le /x apres le findstr je pensais que le problème venait de ma déclaration de variable.

Discussions similaires

  1. Réponses: 6
    Dernier message: 23/06/2014, 12h04
  2. Réponses: 6
    Dernier message: 30/12/2008, 19h44
  3. Réponses: 8
    Dernier message: 25/03/2008, 10h42
  4. Réponses: 10
    Dernier message: 22/05/2006, 11h45

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