Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

recuperer le resultat d'une commande avec FOR (fichier .cmd)

3 réponses
Avatar
Th.A.C
Bonjour,

je n'arrive pas à faire marcher cette ligne:
for /F "usebackq delims= tokens=3" %%I in (`"%exe7zip%" l "%fichier7z%"
^| find /i "files,"`) do (


le but est de récupérer le nombre de fichiers que la commande 7z.exe
affiche à la fin d'une liste.


Pour ca, je fais un:
7z.exe l "monarchive.zip" | find /i "files,"
pour ne récupérer que la ligne qui a le nombre de fichiers et je
récupère le 3eme paramètre à l'aide de la commande FOR

si je n'utilise pas de variables pour l'exécutable, ca marche:
for /F "usebackq tokens=3" %%I in (`7z.exe l "%fichier7z%" ^| find /i
"files,"`) do (

par contre avec des "" ca ne marche pas:
for /F "usebackq tokens=3" %%I in (`"7z.exe" l "%fichier7z%" ^| find /i
"files,"`) do (


j'ai essayé plein de variantes avec "", ^", ... et rien à faire...

pour info:
exe7zip=C:\Program Files\_Utilitaires\7-Zip\7z.exe

si vous avez une idée?

merci

3 réponses

Avatar
Th.A.C
j'ai trouvé la cause et une solution provisoire.

Je n'ai droit qu'a un seul jeu de "" dans les parenthèses...
( http://www.ss64.org/viewtopic.php?id“ )

j'ai converti le chemin de l'exécutable en nom court.

Pas terrible comme solution, snif...
Avatar
Gilles LAURENT [MVP]
"Th.A.C" a écrit dans le message de
news:

Bonjour,

| j'ai trouvé la cause et une solution provisoire.
| j'ai converti le chemin de l'exécutable en nom court.
| Pas terrible comme solution, snif...

En effet, l'interpréteur de commandes ne supporte pas cette syntaxe. Une
solution de contournement est de passer les paramètres comme arguments
d'une routine :

set fichier7z=monarchive.zip
set exe7zip=C:Program Files_Utilitaires7-Zip7z.exe
call :_7zipGetNbFiles "%exe7zip%" "%fichier7z%"
goto :eof

:_7zipGetNbFiles
for /f "tokens=3" %%i in ('%~s1 l %2 ^| find /i "files,"') do (
)

--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr
Avatar
Th.A.C
"Th.A.C" a écrit dans le message de
news:

Bonjour,

| j'ai trouvé la cause et une solution provisoire.
| j'ai converti le chemin de l'exécutable en nom court.
| Pas terrible comme solution, snif...

En effet, l'interpréteur de commandes ne supporte pas cette syntaxe. Une
solution de contournement est de passer les paramètres comme arguments
d'une routine :

set fichier7z=monarchive.zip
set exe7zip=C:Program Files_Utilitaires7-Zip7z.exe
call :_7zipGetNbFiles "%exe7zip%" "%fichier7z%"
goto :eof

:_7zipGetNbFiles
for /f "tokens=3" %%i in ('%~s1 l %2 ^| find /i "files,"') do (
)



Interressant comme solution, merci :-)