Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1048 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  recupérer une chaine de texte d'un variable FOR

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

recupérer une chaine de texte d'un variable FOR

n°2289197
xri59
Posté le 30-09-2016 à 14:39:51  profilanswer
 

Bonjour à tous
 
Selon vous pourquoi ce script ne marche pas ?
 
for %%B in (*.rar) do (  
set "toto= %%B"
echo %toto%
echo toto
echo "toto"
echo "%toto%"
echo %"toto"%
)
 
le but est de récupérer le nom du fichier .rar d abord dans la variable B
puis de la passer à toto pour que ce dernier en garde une copie et éventuellement m'en servir après dans une autre commande
 
En faisant la serie d'echo, j essaye de déterminer la forme à utiliser pour utiliser correctement toto mais aucune sortie ne m affiche le nom du fichier. Certainement une erreur de syntaxe mais je sèche

mood
Publicité
Posté le 30-09-2016 à 14:39:51  profilanswer
 

n°2289198
xri59
Posté le 30-09-2016 à 14:53:59  profilanswer
 

ce que je voudrais faire est conforme à ce qui suit mais je voudrais ma passer d un call
 
fichier za.bat
set currentpath=%~dp0
for %%x in (*.rar) do (  
call za02.bat "%%x"
)
pause
 
fichier za02.bat
set toto= %1
echo %toto%

n°2289222
gatsu35
Blablaté par Harko
Posté le 30-09-2016 à 21:35:30  profilanswer
 

J'ai eu le même problème cette semaine :  
Et j'ai trouvé ma réponse ici :
http://stackoverflow.com/questions [...] -a-command

Code :
  1. for /f "delims=" %%a in ('ver') do @set foobar=%%a


 
'ver' est la commande exécutée

n°2289306
xri59
Posté le 03-10-2016 à 14:45:41  profilanswer
 

merci mais dans mon cas ca ne marche pas

n°2289307
gatsu35
Blablaté par Harko
Posté le 03-10-2016 à 14:49:50  profilanswer
 

Ben donne nous ton code, car c'est bien beau de dire "ça ne marche pas" si tu ne nous montres rien du tout...

n°2289313
xri59
Posté le 03-10-2016 à 16:40:39  profilanswer
 

gatsu35 a écrit :

Ben donne nous ton code, car c'est bien beau de dire "ça ne marche pas" si tu ne nous montres rien du tout...


Sauf erreur de ma part il est en tête du Topic alors pour ce genre de réflexion tu peux passer ton chemin

n°2289314
gatsu35
Blablaté par Harko
Posté le 03-10-2016 à 16:42:34  profilanswer
 

xri59 a écrit :


Sauf erreur de ma part il est en tête du Topic alors pour ce genre de réflexion tu peux passer ton chemin


- Je t'ai donné du code
- Tu me réponds : "merci mais dans mon cas ca ne marche pas"
- Et là tu me dis que ton code est dans le premier code, mais moi je veux le dernier code qui t'a permis de dire "Ca ne marche pas"...
- Toi aussi tu peux passer ton chemin si tu ne veux pas d'aide...


Message édité par gatsu35 le 03-10-2016 à 16:42:54
n°2289320
xri59
Posté le 03-10-2016 à 17:47:52  profilanswer
 

le fichier initial qui ne marche pas
for %%B in (*.rar) do (  
set "toto= %%B"
echo %toto%
echo toto
echo "toto"
echo "%toto%"
echo %"toto"%
)  
 
après différents essais en jouant avec le@
for %%B in (*.rar) do (  
@set "toto= %%B"
echo %toto%
echo toto
echo "toto"
echo "%toto%"
echo %"toto"%
@set "toto=%%B"
echo %toto%
echo toto
echo "toto"
echo "%toto%"
echo %"toto"%
@set "toto=%%B"
echo %toto%
echo toto
echo "toto"
echo "%toto%"
echo %"toto"%
)

n°2289322
gatsu35
Blablaté par Harko
Posté le 03-10-2016 à 18:03:10  profilanswer
 

Mais sinon, as tu essayé ma ligne de code ?  

Code :
  1. for /f "delims=" %%a in ('ver') do @set toto=%%a
  2. echo %toto%


==> Microsoft Windows [version 6.1.7601]
 
Je vois pas trop ton pb, parce que là tu fais n'importe quoi.
 
Tu oublies complètement ton code, et tu réponds simplement à ma question :  
Tu veux faire quoi exactement ?
Tu as quoi en entrée, tu veux quoi en sortie ?

n°2289339
xri59
Posté le 04-10-2016 à 08:29:48  profilanswer
 

Ce qui fonctionne :
fichier za.bat
set currentpath=%~dp0
for %%x in (*.rar) do (  
call za02.bat "%%x"
)
pause
 
fichier za02.bat
set toto= %1
echo %toto%  
 
Je veux me passer de la partie call et intégrer le code de za02 dans za
 
le but pour moi est de récuperer le %%x du for (qui correspond à chaque fichier rar de mon répertoire) dans une variable
puis de traiter cette variable (texte) en analysant son contenu. Cela peut par exemple être pour remplacer les é en e ou bien d autre chose encore voila.
 
Je pense que cela reste faisable en batch ms/dos mais le pb pour moi est d'affecter à la variable toto le %%x ... A chaque tentative la commande echo n'afffiche rien.
C'est un simple pb d'affectation de variable.
Merci

mood
Publicité
Posté le 04-10-2016 à 08:29:48  profilanswer
 

n°2289385
MaybeEijOr​Not
but someone at least
Posté le 04-10-2016 à 13:30:03  profilanswer
 

set toto = "%%x"
 
?

n°2289398
xri59
Posté le 04-10-2016 à 14:21:38  profilanswer
 

et non
echo %toto% dans ce cas donne rien a part commande echo activée

n°2289412
MaybeEijOr​Not
but someone at least
Posté le 04-10-2016 à 15:46:15  profilanswer
 

Code :
  1. for %%x in (*.jpg) do (
  2. set toto=%%x
  3. echo %toto%
  4. )
  5. echo %toto%
  6. pause


 
Voilà un élément de réponse.
En même temps rien ne sert d'utiliser %toto% dans la boucle car il est accessible par %%x.


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
n°2289416
xri59
Posté le 04-10-2016 à 16:39:52  profilanswer
 

pour le toto dans la boucle j'ai besoin de le sauvegarder dans une variable
 
effectivement le echo en ligne 5 fonctionne, seulement il ne contient que la valeur du dernier fichier lu dans la boucle For
 
ce que je veux c est de pouvoir accéder à chaque itération d'ou le echo dans le For en ligne 3 et malheureusement celui ci ne contient rien du tout et donc n'affiche rien

n°2289417
MaybeEijOr​Not
but someone at least
Posté le 04-10-2016 à 16:40:58  profilanswer
 

Et la réponse est que le parsage n'est réalisé qu'en sortie de boucle, afin de s'en affranchir il faut faire ainsi :

 
Code :
  1. @echo off
  2. setlocal ENABLEDELAYEDEXPANSION
  3. for %%x in (*.jpg) do (
  4. set toto=%%x
  5. echo !toto!
  6. )
  7. endlocal
  8. pause
 

Après, comme je l'ai dit précédemment, l'intérêt est maigre puisque tu peux toujours utiliser %%x dans ta boucle.

 


EDIT : mais cela ne change pas le fait qu'une fois sorti de ta boucle, %toto% ne contiendra que la dernière valeur mais c'est normal...


Message édité par MaybeEijOrNot le 04-10-2016 à 16:43:30

---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
n°2289433
xri59
Posté le 04-10-2016 à 17:22:01  profilanswer
 

donc supprimer le parsage permet de récupérer la valeur ...
ok merci je vais essayer  
 
finalement le parsage sert à quoi  ?

n°2289450
MaybeEijOr​Not
but someone at least
Posté le 04-10-2016 à 19:55:20  profilanswer
 

Il permet au langage d'exister...
 
Tu ne le supprimes pas, tu lui dis juste de ne pas allouer la mémoire de la même manière. Sans l'option ajoutée, tu ne pouvais pas modifier la variable tant que la boucle n'était pas terminée.
 
http://initscreen.developpez.com/t [...] tch/#LIV-C
http://initscreen.developpez.com/t [...] batch/#LVI


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
n°2289484
xri59
Posté le 05-10-2016 à 09:09:59  profilanswer
 

super
merci pour ces précisions


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  recupérer une chaine de texte d'un variable FOR

 

Sujets relatifs
faire une somme avec nom d'onglet et ligne variable en VBAColoration de code dans un texte
Fonction JS pour récupérer le tag image "Alt" sur un diaporama[BATCH] récupérer la liste des compilateurs
Creer une chaîne de N "espaces"Récupérer le dernier "bloc" de chaque ligne d'un fichier
Select avec variable contenant plusieurs valeursRecuperer les donnes + mages et les sauvegardez
Récupérer pseudoVba word en-tête image + texte
Plus de sujets relatifs à : recupérer une chaine de texte d'un variable FOR


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR