Bonjour,
J'ai un fichier ip.txt qui liste des ip et le nom de l'unité associée :
xp 192.168.1.5
linux 192.168.1.4
J'ai un fichier bat qui va chercher ces ip pour les pinger :
1 2 3
| for /f "delims= tokens=2" %%a in (c:\batch\ip.txt) do ping %%a -n 2
CLS
if errorlevel 1 net send redzen L'unite %%a est tombee |
Comme vous le voyez si mon ping est HS il envoie un message pour indiquer que l'unité est tombée. Le pb c'est que mon net send affiche ma variable %%a comme %a et non l'IP qui a été pingée. Ou est l'erreur?
Sinon ce qui m'intéresse de récupérer dans mon fichier ip.txt est la première colonne plutôt que la deuxième pour afficher dans mon net send. J'avais donc pensé déclarer une variable du type :
set var1="delims= tokens=1" in (c:\batch\ip.txt)
Je n'aurai alors plus qu'a récupérer la variable %var1% pour mon net send. Je pourrais même créer une autre variable pour pinger mes ip :
set var2="delims= tokens=2" in (c:\batch\ip.txt)
J'aurai alors le code :
1 2 3 4 5
| set var1="delims= tokens=1" in (c:\batch\ip.txt)
set var2="delims= tokens=2" in (c:\batch\ip.txt)
ping %var1% -n 2
if errorlevel 1 net send redzen L'unite %var2% est tombee |
Là on aurait alors quelque chose de propre et clair. Seulement vous allez me dire que ce n'est pas possible d'associer un delims/tokens à un set (peut-être que si mais je n'ai rien trouvé la dessus)... Mais ce serait tellement plus pratique. Il doit bien exister quelque chose qui s'en rapproche ?
Dernière chose : Prenons l'ex de la machine linux qui est HS => à chque fois que mon batch repassera sur la machine pour la pinger il affichera le message "l'unité linux est tombée" ce qui risque de créer une accumulation de messages très importants si la machine rest plantée plusieurs minutes. Est-il possible d'indiquer à net send de ne pas accumuler les messages s'il y en a déja un d'afficher ? => je n'ai rien trouvé dans "net send /?"
Merci de votre aide
Partager