Bonjour,
suite à un petit travail de scripting Batch proposé en cours, je tente de voir les améliorations que je peux apporter à ce script se basant sur robocopy (Win2K3 toolkit)
La partie copie ne me pose aucun souci, je récupère mes variable correctement via une boucle
FOR /F dans un fichier se présentant ainsi:
1 2
|
idMachineOUipMachine, shareMachine, dossierDestination |
Je souhaite optimiser le traitement en ne déclanchant la copie que si la machine est accessible... dans un premier temps j'ai doc pensé à un simple
PING comme ceci
1 2 3 4 5 6 7 8 9
|
FOR /F "usebackq tokens=1-3 delims=, " %%i in ("%~dp0target.txt") DO (
PING -n 1 %%i
IF ERRORLEVEL 0 (
echo server OK
) ELSE (
echo server NOK
)
) |
Et là c'est le drame, il semblerai que l'
ERRORLEVEL soit toujours à 0 même lorsque la commande
PING ne parvient pas à résoudre l'ip/id de la machine, je vous laisse imagine la suite...
En cours, le prof me fourni un autre test... monter le partage via
NET USE \\idMachine\shareMachine ce qui fonctionne très bien hors d'une boucle FOR.
Si je l'intègre dans une boucle FOR présentée ainsi
1 2 3
|
FOR /F "usebackq tokens=1-3 delims=, " %%i in (%~dp0target.txt) DO (
NET USE "\\%%i\%%j" |
La suite étant identique au ping je ne la reprends pas... et devinez quoi
![:aie:](https://www.developpez.net/forums/images/smilies/aie.gif)
ca pique aussi
Y a t-il un moyen "fiable" de récupérer l'ERRORLEVEL avec sa vraie valeur dans la boucle FOR?
Cordialement
Partager