recuperer le resultat d'une commande avec FOR (fichier .cmd)
3 réponses
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
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...
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
"Th.A.C" <aenleverraivac@free.fr> a écrit dans le message de
news:uNsq2IW7HHA.5160@TK2MSFTNGP05.phx.gbl
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
| 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
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 :-)
"Th.A.C" <aenleverraivac@free.fr> a écrit dans le message de
news:uNsq2IW7HHA.5160@TK2MSFTNGP05.phx.gbl
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 (
)
| 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 ( )