Tester ping/share dans une boucle FOR
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:
Code:
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
Code:
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... :aie:
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
Code:
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: 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