Afficher le contenu d'une variable en batch

Fermé
valarno - 27 févr. 2009 à 17:20
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 - 30 juin 2009 à 18:01
Bonjour,

Je n'arrive pas à afficher le contenu d'une variable en batch DOS.
Voici mon batch (le but étant d'afficher la variable "fic" à chaque itération de la boucle)

for /f %%a in ('dir /b') do (
set fic = %%a
echo "%fic%"
)

j'ai essayé : echo %%fic, echo %fic%, avec guillemet, sans guillement, rien n'y fait !!
Si quelqu'un voit l"erreur je suis preneur !

D'avance Merci

5 réponses

Pico51 Messages postés 716 Date d'inscription mercredi 27 décembre 2006 Statut Membre Dernière intervention 16 juillet 2019 69
27 févr. 2009 à 17:21
set fic = %%a
Ne mets pas d'espace autour d'un égal ! Du moins, essaie.
0
En fait le problème c'est pas l'affectation d'une valeur à la variable fic (avec ou sans espace elle obtient bien une valeur). Le problème se situe sur la ligne echo
0
Pico51 Messages postés 716 Date d'inscription mercredi 27 décembre 2006 Statut Membre Dernière intervention 16 juillet 2019 69
27 févr. 2009 à 22:51
Qu'est-ce que la ligne echo te renvoie ?
Parce que, j'ai toujours vu que l'on DOIT mettre des espaces en BATCH.
0
Voilà le déroulement du batch. Comme tu peux le voir fic reçoit bien une valeur différente à chaque itération (j'ai bien mis un espace pour le set fic = %%a), mais echo renvoit toujours la même valeur qui correspond à rien....et surtout pas à la valeur de fic !!

W:\>for /F %a in ('dir /b') do (
set fic = %a
echo ~DF9DCF.tmp
)

W:\>(
set fic = ARC1C9
echo ~DF9DCF.tmp
)
~DF9DCF.tmp

W:\>(
set fic = EScan
echo ~DF9DCF.tmp
)
~DF9DCF.tmp

W:\>(
set fic = ExchangePerflog_8484fa312d2606bae8e1270f.dat
echo ~DF9DCF.tmp
)
~DF9DCF.tmp

W:\>(
set fic = fichier2.txt
echo ~DF9DCF.tmp
)
~DF9DCF.tmp

W:\>(
set fic = hsperfdata_ARMES
echo ~DF9DCF.tmp
)
~DF9DCF.tmp

W:\>(
set fic = java_install_reg.log
echo ~DF9DCF.tmp
)
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
28 févr. 2009 à 07:51
hello
essaye
setlocal enableDelayedExpansion
for /f %%a in ('dir /b') do (
set fic=%%a
echo !fic!
) 
setlocal disableDelayedExpansion
0
Super dubcek mon batch fonctionne à présent !!

Bizarre quand même cette syntaxe, c'est la première fois que je vois ça.

Merci
0

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

Posez votre question
for /f %%a in ('dir /b') do (
set fic = %%a
echo "%fic%"
pause
)
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
30 juin 2009 à 18:01
?
0