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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 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