Bonjour à tous,
Voici mon p'tit problème, je souhaite créer une boucle qui pour une liste de PCs contenus dans un fichier texte "liste_amaj.txt":
- stoppe un service OCS Inventory
- remplace un fichier sur dans le C:\
- redémarre le service
- renseigne un fichier log "liste_majok"
Voici donc mon p'tit batch assez simple:
1 2 3 4 5 6 7 8 9 10
| for /F %%i in (\\server\temp\liste_amaj.txt) do (
if exist "\\%%i\c$\Programdata\OCS Inventory NG\Agent\" (
SC \\%%i stop "OCS Inventory Service"
xcopy /Y "\\server\temp\ocsinventory.ini" "\\%%i\c$\Programdata\OCS Inventory NG\Agent\"
ping 127.0.0.1 //ce ping évite de redémarrer le service trop vite au cas ou le fichier n'est pas tout à fait enregistré...
SC \\%%i start "OCS Inventory Service"
@echo %%i >> \\server\temp\liste_majok.txt
)
)
pause |
Le truc, c'est que le fichier "liste_majok" est renseigné à chaque fois, quand bien même le PC ne répond pas au ping et que l'action n'a pas été effectuée, concrètement on rentre dans la boucle quoiqu'il se passe. Pourtant c'est bien là le rôle de mon "if exist"
A tout hasard, le problème ne viendrait-il pas du fait que tout ne soit pas sur la même ligne?
J'ai par exemple fait un test avec un pc hors ligne :
if exist "\\PChorsligne\C$\toto" (echo tata)
=> après le timeout la commande se passe sans me retourner "tata", si je refais le test avec un pc en ligne j'ai bien mon tata qui s'affiche...
Merci d'avance pour votre aide!
Arnaud
Partager