Un petit batch avec boucle / Call / parametre et condition - Shell/Batch - Programmation
Marsh Posté le 18-06-2008 à 14:29:49
Quelle est la question au juste ?
Marsh Posté le 18-06-2008 à 14:32:59
j'edit, je colore, j'améliore
Les problemes sont donc le passage en paramètre et le test à effectuer afin que le script ne glande pas 30sec si la machine distante n'est pas allumée
Marsh Posté le 18-06-2008 à 20:17:13
Tu peux spécifier les délais de la commande PING, par exemple :
ping -n 1 -w 10 192.168.0.10
Il enverra qu'une seule requête avec un délai d'attente max de 10ms.
Je pense que le problème venait de là ?
J'ai pas tout compris parce que t'as peut être trop bien expliqué ^^
Donc s'il y a d'autre problème explique juste le problème simplement stp..
Marsh Posté le 19-06-2008 à 21:48:14
Le probleme est dans le choix du test pour savoir si un pc est allumé
et le passage en parametre de %N semble ne pas marcher, est ce correcte le coup du Call XXX.bat %N puis on réutilise alors tranquillement le %N dans le .bat cité ?
Marsh Posté le 20-06-2008 à 12:23:28
"Le probleme est dans le choix du test pour savoir si un pc est allumé"
> j'viens de répondre a ce probleme ...
ping -n 1 -w 10 192.168.0.10
if errorlevel 1 echo pc éteind
Et pourquoi tu veux faire obligatoirement un 2ieme bat ? pourquoi ne pas tout mettre en un seul ?...
Marsh Posté le 20-06-2008 à 15:36:36
pas faux, d'une part pour essayer le passage en paramere que j'avais jamais fait et à la base pour avoir un log complet en faisant un genre de call del.bat >> log.txt mais il est vrai que ca sera lourd dans le log d'afficher tout.
Bon je test le ping if error ^^
Marsh Posté le 20-06-2008 à 15:44:10
Je vais tester un truc dans ce style
For /L %%1 IN (1,1,100) Do (
ping -n 1 -w PC%%1
if errorlevel 1 goto next
del "\\pc%1\C$\......rac1
del "\\pc%1\C$\......rac2
echo fichier efface sur PC %1 >> log.txt
:next
)
pause
Marsh Posté le 20-06-2008 à 15:53:35
ca m'affiche la parenthèse xD
on dirait que le Goto fait sauter ma fin de boucle.... genre il test le ping le premier ping pas donc go to puis ) de fin de for et Boom planté.. je sais meme pas pourquoi il l'affiche.
Je vais tester avec un pc allumé
ha oui en effet le goto kill le for, je ne saivais pas, on va faire des If
donc un truc comme ca sans goto
For /L %%1 IN (1,1,100) Do (
ping -n 1 -w PC%%1
if not errorlevel 1 then (
del "\\pc%1\C$\......rac1
del "\\pc%1\C$\......rac2
echo fichier efface sur PC %1 >> log.txt
)
)
pause
Marsh Posté le 20-06-2008 à 18:35:21
le goto :eof est fait pour quitter la boucle.
For /L %%1 IN (1,1,100) Do (
ping -n 1 -w PC%%1
if not errorlevel 0 goto :eof
del "\\pc%1\C$\......rac1
del "\\pc%1\C$\......rac2
echo fichier efface sur PC %1 >> log.txt
)
pause
Marsh Posté le 20-06-2008 à 19:22:48
je ne suis plus au boulo donc je testerais lundi, mais juste une question sur le nombre de %, il en faut bien 2 pour la boucle for et ensuite un devant le nom de variable ? je suis tombé sur des scripts ou la variable est entrouré de %var%
Marsh Posté le 23-06-2008 à 14:34:40
ping -n 1 -w PC%%1
manque le temps en Ms d'ailleur apres le -w
la boucle semble marcher mais ca plante au bout de quelques PC, il y a peu être mieux qu'un test ping pour voir si la machine est allumé, j'ai vu un post ou on test un netstat pour monter une lettre du pc ciblé, on peut tester un netstat avec le IF NOT errorlevel 1 de la même manière je suppose
Marsh Posté le 18-06-2008 à 14:28:34
Je cherche à automatiser + log d'un batch qui fait une boucle sur un réseau pour supprimer des raccourcis du menu démarrer.
En Algo ca donne à peu pret ça pour 100 PC executé en session root qui peut librement acceder aux C: des postes réseaux :
___________________________________________________________
Pour les PC de 1 à 100
Si elle est allumé / "pingable" (ou autre test pour voir si machine allumée genre net use / If EXIST ...)
Alors |Je supprime mes 2 vieux racc dans le menu démarrer
J'écris dans un fichier log Le Pc X est fait
FinSi
Fin du Pour
___________________________________________________________
J'ai déja un Bat qui fait la boucle et qui supprime, mon probleme est que chaque machine pas allumé fait ramer le script à mort, sur 70PC ca a mis 2h et je ne sais pas lequels ont été traité.
Le batch Beta 0.1 qui marchera avec votre aide !
Main.bat
For /L %%N IN (1,1,100) Do (
IF Le pc est allumé "pingable" ou tester si un fichier existe dessus ou tester le monter en lecteur réseau ou autre idée ?
Call Del.bat %N qui sera le fichier qui supprime les raccourcis et fait le log avec passage du numero de PC en paramètre
)
Del.bat
del \\PC%N\C$\Doc & set ......... raccourci à delete ca marche manuellement avec un numero de pc
echo le PC %N a ete traité >> log.txt
C'est le rouge qui pose problème : le passage de paramètre semble ne pas marcher, et surtout le choix du test à effectuer pour voir si la machine distante est allumée
En vous remerciant
Message édité par LangueDeGeek le 18-06-2008 à 14:32:10