[batch]inventaire réseau-problème de boucle "for"

inventaire réseau-problème de boucle "for" [batch] - Shell/Batch - Programmation

Marsh Posté le 23-06-2006 à 17:10:36    

Bonjour,
 
Je suis en train de réaliser une série de batches pour effectuer un inventaire matériel et logiciel de toutes les machines de mon parc grâce aux pstools mais jai des soucis avec une boucle...
 
voilà la partie de code qui pose problème:
 
en gros,
 

Code :
  1. set services=seda stats direction SAG SEF SERH ITEPSA
  2. REM Mise en forme de la date pour le nom du fichier
  3. REM d'abord, l'extraire sous la forme jj/mm/aaaa :
  4. for /f "tokens=2" %%A in ('date /t') do set jourtmp=%%A
  5. REM ensuite, la transformer sous la forme mm-jj :
  6. FOR /F "delims=/ TOKENS=1,2*" %%A IN ('@echo %jourtmp%') DO SET mois=%%B-%%C
  7. for %%v in (%services%) do (
  8. set fichier_inventaire="inventaires\%%v\inventaire_%%v_%mois%.txt"
  9. echo le %date% à %heure% >> %fichier_inventaire%
  10. for /F "eol=; tokens=1,2 delims=," %%a in (services\%%v.txt) do (call psinventory.bat %%a "%%b" %%v %mois%)
  11. )


 
le problème esy qu'il ne reconnaît pas la variable %fichier_inventaire% à la ligne  

Code :
  1. echo le %date% à %heure% >> %fichier_inventaire%


 
%fichier_inventaire% est vide
 
Comment faire pour qu'elle soit reconnue?
 
Merci!

Reply

Marsh Posté le 23-06-2006 à 17:10:36   

Reply

Marsh Posté le 23-06-2006 à 21:18:14    

C'est normal : il faut utiliser l'expansion retardée des variables.
 
set /?
pour plus d'infos.
 
Mais le plus simple serait d'appeler une procédure :

Code :
  1. for ... %%v in (...) do (
  2.   call :process "%%v"
  3. )
  4. goto next
  5. :process
  6. echo %~1
  7. goto :eof
  8. :next

Reply

Marsh Posté le 27-06-2006 à 09:25:42    

merci nglechau!
 
grâce à toi, je viens d'apprendre deux atres notions qui ne figuraient pas ds mon tuto batch: l'expansion retardée et les appels de balises avec paramètres!
 
:)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed