[Batch] Filtrage et découpage de sortie standard
NY-152
Messages postés
128
Statut
Membre
-
dubcek Messages postés 18627 Date d'inscription Statut Contributeur Dernière intervention -
dubcek Messages postés 18627 Date d'inscription Statut Contributeur Dernière intervention -
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
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
-
hello
montre un exemple du texte à analyser -
La sortie est du genre :
Folder analyzed to 55% without probems
-
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 -
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 :/ -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
for /f "tokens=4" %a in ('ta_commande') ...... -
-
%%a dans un .bat, montre le code
-
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 ? -
essayer en protégeant le : (equivalent du \ en bash)
for /f "tokens=4" %%a in ('repaffect -ac -fl M^:\WorkDir') do @echo %%a -
Ç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 ^^ -
avec ou sans for:
C:> set nom=fichier.txt
C:> echo %nom:~0,-4%
fichier
C:> for %a in (%nom%) do @echo %~na
fichier