[Batch] Filtrage et découpage de sortie standard

Bonjour,

J'utilise un utilitaire qui analyse un répertoire. La sortie de ce programme sort un pourcentage.

Ce que j'aimerais faire c'est de filtrer cette sortie et de n'afficher que le pourcentage, le tout à la volée. En Bash sous Linux, c'est possible mais je ne vois pas comment faire sous Windows en Batch. Est-ce possible ? Si oui quelqu'un peut-il m'aider ?

D'avance, merci

11 réponses

  1. Contributeur
    hello
    montre un exemple du texte à analyser
    0
    1. La sortie est du genre :

      Folder analyzed to 55% without probems
      0
      1. Contributeur
        on utilise %a en interactif, %%a dans un .bat
        avec ou sans le %
        C:> set pc=Folder analyzed to 55% without probems
        C:> for /f "tokens=4" %a in ('echo %pc%') do @echo %a
        55%
        C:> for /f "tokens=4" %a in ('echo %pc%') do @(set x=%a & echo %x:~0,-2%)
        55
        0
        1. L'exemple ne fonctionne pas j'ai l'erreur :

          pca était inattendu.


          De plus l'exemple utilise une chaine de caractère comme base de découpe, moi je cherche ç récupérer la sortie de mon programme pendant son exécution, en temps réel pour en extraire son pourcentage.

          J'avoue que je ne sais pas trop comment faire. Le Batch est beaucoup plus limité que le Bash j'ai l'impression :/
          0
          1. Contributeur
            for /f "tokens=4" %a in ('ta_commande') ......
            0
            1. a était inattendu


              Pas beaucoup de chance moi lol
              0
              1. Contributeur
                %%a dans un .bat, montre le code
                0
                1. J'ai corrigé pour le %%a (j'avais malencontreusement mis un espace)

                  Par contre si cela marche avec une chaîne comme dans l'exemple, ça ne marche pas avec mon programme ! Pourquoi ? Une interprétation du Batch qui foire. J'explique :

                  for /f "tokens=4" %%a in ('repaffect -ac -fl M:\WorkDir') do @echo %%a


                  Dans cette commande il me sort :

                  \WorkDir') était attendu


                  J'ai beau quotté, rien n'y fait ; Une idée ?
                  0
                  1. Contributeur
                    essayer en protégeant le : (equivalent du \ en bash)
                    for /f "tokens=4" %%a in ('repaffect -ac -fl M^:\WorkDir') do @echo %%a
                    0
                    1. Ça fonctionne :)

                      Il ne reste plus qu'à trouver le moyen de récupérer le nom d'un fichier sans son extension (sans boucle for) et j'aurais fini ^^

                      En tout cas merci de ton aide ^^
                      0
                      1. Contributeur
                        avec ou sans for:
                        C:> set nom=fichier.txt
                        C:> echo %nom:~0,-4%
                        fichier
                        C:> for %a in (%nom%) do @echo %~na
                        fichier
                        0

                        Discussions similaires

                        Batch installation

                        2 réponses