[Batch] Filtrage et découpage de sortie standard

[Fermé]
Signaler
Messages postés
115
Date d'inscription
mercredi 22 juillet 2009
Statut
Membre
Dernière intervention
27 février 2021
-
Messages postés
18247
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
2 août 2021
-
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

Messages postés
18247
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
2 août 2021
5 333
hello
montre un exemple du texte à analyser
Messages postés
115
Date d'inscription
mercredi 22 juillet 2009
Statut
Membre
Dernière intervention
27 février 2021
24
La sortie est du genre :

Folder analyzed to 55% without probems
Messages postés
18247
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
2 août 2021
5 333
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
Messages postés
115
Date d'inscription
mercredi 22 juillet 2009
Statut
Membre
Dernière intervention
27 février 2021
24
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 :/
Messages postés
18247
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
2 août 2021
5 333
for /f "tokens=4" %a in ('ta_commande') ......
Messages postés
115
Date d'inscription
mercredi 22 juillet 2009
Statut
Membre
Dernière intervention
27 février 2021
24
a était inattendu


Pas beaucoup de chance moi lol
Messages postés
18247
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
2 août 2021
5 333
%%a dans un .bat, montre le code
Messages postés
115
Date d'inscription
mercredi 22 juillet 2009
Statut
Membre
Dernière intervention
27 février 2021
24
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 ?
Messages postés
18247
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
2 août 2021
5 333
essayer en protégeant le : (equivalent du \ en bash)
for /f "tokens=4" %%a in ('repaffect -ac -fl M^:\WorkDir') do @echo %%a
Messages postés
115
Date d'inscription
mercredi 22 juillet 2009
Statut
Membre
Dernière intervention
27 février 2021
24
Ç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 ^^
Messages postés
18247
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
2 août 2021
5 333
avec ou sans for:
C:> set nom=fichier.txt
C:> echo %nom:~0,-4%
fichier
C:> for %a in (%nom%) do @echo %~na
fichier