Valeur perdu apres plusieur pipe...

Fermé
risoos - 31 août 2017 à 10:21
 risoos - 1 sept. 2017 à 16:48
Bonjour,
je fait un exemple simple pour montrer mon probleme...

echo toto tata titi|awk.exe -F"tata" "{print NR,$1}"|(set /p yyy=&set yyy)
set yyy

dans le set yyy de la fin de la premiere ligne on a la bonne valeur mais elle est perdu au set yyy de la deuxieme ligne
A voir également:

6 réponses

ps: je ne veux pas mettre ma commande dans un for non plus a cause que ma ligne de commande est reelement trop complexe pour fonctionner dans un for...
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
31 août 2017 à 13:25
hello
continuer entre les ()
echo toto tata titi|awk.exe -F"tata" "{print NR,$1}"|(set /p yyy=&set yyy
set yyy)
0
la valeur ne persiste pas en dehors de ( ) ... j'en ai de besoin plus loin ...

pour etre plus simple encore pour les test on peux enlever le awk...

echo toto tata titi|(set /p yyy=&set yyy
set yyy)
set yyy
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
Modifié le 31 août 2017 à 14:16
mettre la commande dans un .bat et exécuter le .bat dans for
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
humm je veux pas utiliser un batch mais je viens d'essayer avec l'exemple en question ca marche avec 2 batch, mais pour mon vrai projet c'est peut etre pas possible... parcontre si ya moyen de faire la meme chose avec un call de fonction.


a.bat
------
@echo off
echo toto tata titi|awk.exe -F"tata" "{print NR,$1}"

b.bat
------
@echo off
for /f "delims=" %%A in ('a.bat') do set "var=%%A"
echo [%var%]
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
1 sept. 2017 à 12:04
comme ça
for /f "delims=" %%A in ('echo toto tata titi^|awk.exe -F"tata" "{print NR,$1}" ') do (
set yyy=%%A
set yyy
)

set yyy
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
1 sept. 2017 à 14:45
avec call
call :bb > tmp1
set /p x=<tmp1
echo %x%
exit /b

:bb
echo toto tata titi|awk.exe -F"tata" "{print NR,$1}"
goto :eof
0
risoos > dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024
1 sept. 2017 à 16:48
ouein mon system actuel c'est avec des fichier temp ... mais vus que j'ai plusieur place que j'ai besoin des valeur ca s'imbrique et ca devient un peux le bordel... j'ai fait une fonction pour generer un nom de fichier temp unique que j'utilise pour aller chercher les valeur, a cause que c'est imbriquer je me ramasse avec des valeur dans mon temp qui est pas la valeur attendu... j'ai generer plusieur temp donc c'est un temp par place ou j'ai une fonction qui retourne une valeur mais la si ya un arret dans les batch soit un arret du user soit un erreur ou autre, tout les temp reste la vus que je me suis pas rendu a la fin du fichier pour pouvoir les deleter .... des fois c'est des temp de plusieur meg ou meme plusieur gigs.... bref j'aimerais mieu pouvoir passer les valeur par les pipe et filtrer le resultat qui me sort la valeur voulut.... je sais je sais chu dificile mais je pense que j'ai vraiment besoin d'une solution qui affect directement une variable... si ca peux exister lolll.. je trouve ca vraiment dommage que la valeur se perd a la fin du pipe ca aurrait ete vraiment l'ideal...
0