recupérer une chaine de texte d'un variable FOR - Shell/Batch - Programmation
Marsh Posté le 30-09-2016 à 14:53:59
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%
Marsh Posté le 30-09-2016 à 21:35:30
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 :
|
'ver' est la commande exécutée
Marsh Posté le 03-10-2016 à 14:49:50
Ben donne nous ton code, car c'est bien beau de dire "ça ne marche pas" si tu ne nous montres rien du tout...
Marsh Posté le 03-10-2016 à 16:40:39
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
Marsh Posté le 03-10-2016 à 16:42:34
xri59 a écrit :
|
- 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...
Marsh Posté le 03-10-2016 à 17:47:52
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"%
)
Marsh Posté le 03-10-2016 à 18:03:10
Mais sinon, as tu essayé ma ligne de code ?
Code :
|
==> 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 ?
Marsh Posté le 04-10-2016 à 08:29:48
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
Marsh Posté le 04-10-2016 à 14:21:38
et non
echo %toto% dans ce cas donne rien a part commande echo activée
Marsh Posté le 04-10-2016 à 15:46:15
Code :
|
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.
Marsh Posté le 04-10-2016 à 16:39:52
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
Marsh Posté le 04-10-2016 à 16:40:58
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 :
|
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...
Marsh Posté le 04-10-2016 à 17:22:01
donc supprimer le parsage permet de récupérer la valeur ...
ok merci je vais essayer
finalement le parsage sert à quoi ?
Marsh Posté le 04-10-2016 à 19:55:20
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
Marsh Posté le 30-09-2016 à 14:39:51
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