problème de transmission de variables

problème de transmission de variables - Shell/Batch - Programmation

Marsh Posté le 20-06-2006 à 14:51:14    

Bonjour,
 
dans une boucle j'effectue un

Code :
  1. call batch.bat param1 param2

mais il ne prend en compte que le premier paramètre..quelqu'un peut-il m'éclairer?
 
voici mon batch:

Code :
  1. @echo off
  2. title installation sur les postes du service %1
  3. ::copie
  4. for /F "eol=; tokens=1,2 delims=," %%a in (services\%1.txt) do (call copie.bat %%a %%b)
  5. pause


 
malheureusement, dans mon batch copie.bat, le paramètre %%b n'est pas pris en compte...seul %%a l'est...
 
Pourtant, si jutiilise echo:

Code :
  1. @echo off
  2. title installation sur les postes du service %1
  3. ::copie
  4. for /F "eol=; tokens=1,2 delims=," %%a in (services\%1.txt) do (echo %%a %%b)
  5. pause


 
eh bien, %%b s'affiche bien...
 
comment faire?
 
 :??:  
 
 
 
 

Reply

Marsh Posté le 20-06-2006 à 14:51:14   

Reply

Marsh Posté le 20-06-2006 à 16:11:51    

Tu peux poster ton copie.bat ?
 
Il y a des espaces dans %%a et %%b ? Quote-les pour voir.

Reply

Marsh Posté le 20-06-2006 à 17:37:20    

que veux-tu dire par quoter?
quoter les espaces ou l'espace entre %%a et %%b ?
 
comment le faire?
 
voici le code de copie.bat:

Code :
  1. @echo off
  2. set ordi=%1
  3. set agent=%2
  4. title installation sur le poste %1 appartenant à l'utilisateur %2
  5. SET /P confirm="Voulez-vous vraiment envoyer le pack vers l'ordinateur %ordi%? (O/N) "
  6. if /i "%confirm%"=="N" GOTO ANNUL
  7. echo.
  8. if not exist \\%ordi%\C$\*.* goto PCABSENT
  9. echo.
  10. echo copie du pack sur le bureau de l'agent %agent%
  11. xcopy /S pack "\\%ordi%\C$\Documents and Settings\All Users\Bureau"
  12. if errorlevel 1 goto erreurCOPIE
  13. echo.
  14. goto fin
  15. :ANNUL
  16. echo envoi du pack annulé sur le poste %1 >> Logs\log.txt
  17. echo édition du fichier log effectuée
  18. goto fin
  19. :PCABSENT
  20. echo   %ordi% absent. Vérifiez qu'il est bien démarré
  21. echo   %ordi% absent >> Logs\log.txt
  22. echo édition du fichier log effectuée
  23. goto fin
  24. :erreurCOPIE
  25. echo %ordi% de l'agent %agent%=> copie non OK>>Logs\log.txt
  26. echo édition du fichier log effectuée
  27. goto fin
  28. :fin
  29. echo.
  30. echo fin de la copie


 
bref, je ne sais pas si ça va t'aider...
 
sinon, javais fait pour le batch précédent:

Code :
  1. @echo off
  2. title installation sur les postes du service %1
  3.      
  4. ::copie
  5.      
  6. for /F "eol=; tokens=1,2 delims=," %%a in (services%1.txt) do (call copie.bat %%a %%b %1)
  7. pause


 
et bizarrement, il prenait en compte le paramètre %1 de

Code :
  1. call copie.bat %%a %%b %1


 
le paramètre %%a était pris en compte en tant que premier paramètre, pas %%b, et %1 en tant que deuxième paramètre

Message cité 1 fois
Message édité par baobazz le 20-06-2006 à 17:38:00
Reply

Marsh Posté le 20-06-2006 à 20:19:33    

baobazz a écrit :

que veux-tu dire par quoter?


Comme ça :

Code :
  1. for /F "eol=; tokens=1,2 delims=," %%a in (services%1.txt) do (
  2.   echo a=----%%a---
  3.   echo b=----%%b---
  4.   call copie.bat "%%a" "%%b"
  5. )


 
puis:

Code :
  1. set ordi=%~1
  2. set agent=%~2
  3. echo ordi=----%ordi%---
  4. echo agent=----%agent%---

Reply

Marsh Posté le 21-06-2006 à 09:19:14    

merci, nglechau!
 
à quoi servent les ~ de "set ordi=%~1"?
 
merci en tt cas!

Reply

Marsh Posté le 21-06-2006 à 12:56:07    

Ca permet d'enlever les guillemets des arguments que tu as fournis.

Reply

Marsh Posté le 21-06-2006 à 13:37:21    

super!!!
 
merci!

Reply

Sujets relatifs:

Leave a Replay

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