Ce script devrait permettre, au démarrage d'un ordinateur, qu'une connexion
réseau soit établie, avant d'effectuer d'autres traitements réseau, comme des
mappages, des connexions à des imprimantes, etc.
C'est ce que fait le batch suivant, sur le 192.168.1.1 (supposé être l'IP de
la passerelle).
@echo off
:BOUCLE
setlocal
for /F "usebackq" %%i in (`ping -n 1 192.168.1.1 ^| find /C /I
"impossible"`) do (set NBERR=%%i)
echo Ping fait ; Nb acces incorrects : %NBERR%
if /I %NBERR% GTR 0 goto :BOUCLE
echo Connexion OK
::
:: suite des traitements réseau...
::
endlocal
exit
J'ai désactivé le réseau, la connection est toujours ok ?.
Apparemment le ping ne se fait pas.
Tu peux aussi, à la place du délai dépassé, obtenir : "Défaillance générale" Ou d'autres messages.
re @ salutations -- Michel Claveau
Gilles LAURENT [MVP]
"ben" wrote:
Bonjour,
Ce script devrait permettre, au démarrage d'un ordinateur, qu'une connexion réseau soit établie, avant d'effectuer d'autres traitements réseau, comme des mappages, des connexions à des imprimantes, etc.
En complément de la réponse de Michel, si votre plateforme est Windows XP ou supérieur alors une méthode robuste et non localisée consiste à utiliser la classe WMI Win32_PingStatus. Cette classe possède la propriété StatusCode qui vous indiquera le résultat de l'opération. C'est ici : <http://msdn.microsoft.com/en-us/library/aa394350(VS.85).aspx>
-- Gilles LAURENT MVP Windows Server - Admin Frameworks http://glsft.free.fr
"ben" wrote:
Bonjour,
Ce script devrait permettre, au démarrage d'un ordinateur, qu'une connexion
réseau soit établie, avant d'effectuer d'autres traitements réseau, comme des
mappages, des connexions à des imprimantes, etc.
En complément de la réponse de Michel, si votre plateforme est Windows XP ou
supérieur alors une méthode robuste et non localisée consiste à utiliser la
classe WMI Win32_PingStatus. Cette classe possède la propriété StatusCode qui
vous indiquera le résultat de l'opération. C'est ici :
<http://msdn.microsoft.com/en-us/library/aa394350(VS.85).aspx>
--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr
Ce script devrait permettre, au démarrage d'un ordinateur, qu'une connexion réseau soit établie, avant d'effectuer d'autres traitements réseau, comme des mappages, des connexions à des imprimantes, etc.
En complément de la réponse de Michel, si votre plateforme est Windows XP ou supérieur alors une méthode robuste et non localisée consiste à utiliser la classe WMI Win32_PingStatus. Cette classe possède la propriété StatusCode qui vous indiquera le résultat de l'opération. C'est ici : <http://msdn.microsoft.com/en-us/library/aa394350(VS.85).aspx>
-- Gilles LAURENT MVP Windows Server - Admin Frameworks http://glsft.free.fr
ben
A place du mot IMPOSSIBLE il faut mettre TIMED OUT acr mon OS est en anglais Correspond au message du ping infructueux.
Aussi n'y a-t-il pas un setlocal ou endlocal superflu ?. Le endlocal est-il obligatoire ?
@ECHO Off setlocal Echo SecondBoot c:tempsleep 60
:BOUCLE setlocal for /F "usebackq" %%i in (`ping -n 1 10.0.0.2 ^| find /C /I "timed out"`) do (set NBERR=%%i) echo Ping fait ; Nb acces incorrects : %NBERR% if /I %NBERR% GTR 0 goto :BOUCLE echo Connexion OK
c:tempnetdom join %ComputerName% /domain:LTECG-PEDA /userd:LTECG-PEDAimage /passwordd:cl3li2ph1_IMAGE regedit /s C:TEMPcount.reg c:tempshutgui /l /y /t:10 /r if exist c:temp*.exe del c:temp*.exe /f /q>nul if exist c:temp*.reg del c:temp*.reg /f /q>nul if exist c:temp*.txt del c:temp*.txt /f /q>nul if exist c:tempfirstboot.cmd del c:tempfirstboot.cmd /f /q>nul del c:tempSecondboot.cmd endlocal exit ********************
Merci. Cordialement.
A place du mot IMPOSSIBLE il faut mettre TIMED OUT acr mon OS est en anglais
Correspond au message du ping infructueux.
Aussi n'y a-t-il pas un setlocal ou endlocal superflu ?.
Le endlocal est-il obligatoire ?
@ECHO Off
setlocal
Echo SecondBoot
c:tempsleep 60
:BOUCLE
setlocal
for /F "usebackq" %%i in (`ping -n 1 10.0.0.2 ^| find /C /I
"timed out"`) do (set NBERR=%%i)
echo Ping fait ; Nb acces incorrects : %NBERR%
if /I %NBERR% GTR 0 goto :BOUCLE
echo Connexion OK
c:tempnetdom join %ComputerName% /domain:LTECG-PEDA
/userd:LTECG-PEDAimage /passwordd:cl3li2ph1_IMAGE
regedit /s C:TEMPcount.reg
c:tempshutgui /l /y /t:10 /r
if exist c:temp*.exe del c:temp*.exe /f /q>nul
if exist c:temp*.reg del c:temp*.reg /f /q>nul
if exist c:temp*.txt del c:temp*.txt /f /q>nul
if exist c:tempfirstboot.cmd del c:tempfirstboot.cmd /f /q>nul
del c:tempSecondboot.cmd
endlocal
exit
********************
A place du mot IMPOSSIBLE il faut mettre TIMED OUT acr mon OS est en anglais Correspond au message du ping infructueux.
Aussi n'y a-t-il pas un setlocal ou endlocal superflu ?. Le endlocal est-il obligatoire ?
@ECHO Off setlocal Echo SecondBoot c:tempsleep 60
:BOUCLE setlocal for /F "usebackq" %%i in (`ping -n 1 10.0.0.2 ^| find /C /I "timed out"`) do (set NBERR=%%i) echo Ping fait ; Nb acces incorrects : %NBERR% if /I %NBERR% GTR 0 goto :BOUCLE echo Connexion OK
c:tempnetdom join %ComputerName% /domain:LTECG-PEDA /userd:LTECG-PEDAimage /passwordd:cl3li2ph1_IMAGE regedit /s C:TEMPcount.reg c:tempshutgui /l /y /t:10 /r if exist c:temp*.exe del c:temp*.exe /f /q>nul if exist c:temp*.reg del c:temp*.reg /f /q>nul if exist c:temp*.txt del c:temp*.txt /f /q>nul if exist c:tempfirstboot.cmd del c:tempfirstboot.cmd /f /q>nul del c:tempSecondboot.cmd endlocal exit ********************
Merci. Cordialement.
Gilles LAURENT [MVP]
"ben" wrote:
A place du mot IMPOSSIBLE il faut mettre TIMED OUT acr mon OS est en anglais Correspond au message du ping infructueux.
C'est pour, entre autre, éviter ce genre de problème que je vous invite à utiliser la classe WMI Win32_PingStatus. Comme cela vous êtes d'une part indépendant de la locale et également de la réponse de la commande ping comme l'indique Michel.
Aussi n'y a-t-il pas un setlocal ou endlocal superflu ?. Le endlocal est-il obligatoire ?
Oui, le setlocal à l'intérieur de la boucle est en trop. Si la boucle se répète beaucoup alors vous allez exploser la pile. L'instruction setlocal à le même comportement que le mnémonique assembleur PUSH. Il permet de préserver l'environnement sur la pile puis de le restituer via la commande endlocal (mnémonique assembleur POP).
-- Gilles LAURENT MVP Windows Server - Admin Frameworks http://glsft.free.fr
"ben" wrote:
A place du mot IMPOSSIBLE il faut mettre TIMED OUT acr mon OS est en anglais
Correspond au message du ping infructueux.
C'est pour, entre autre, éviter ce genre de problème que je vous invite à
utiliser la classe WMI Win32_PingStatus. Comme cela vous êtes d'une part
indépendant de la locale et également de la réponse de la commande ping comme
l'indique Michel.
Aussi n'y a-t-il pas un setlocal ou endlocal superflu ?.
Le endlocal est-il obligatoire ?
Oui, le setlocal à l'intérieur de la boucle est en trop. Si la boucle se
répète beaucoup alors vous allez exploser la pile. L'instruction setlocal à
le même comportement que le mnémonique assembleur PUSH. Il permet de
préserver l'environnement sur la pile puis de le restituer via la commande
endlocal (mnémonique assembleur POP).
--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr
A place du mot IMPOSSIBLE il faut mettre TIMED OUT acr mon OS est en anglais Correspond au message du ping infructueux.
C'est pour, entre autre, éviter ce genre de problème que je vous invite à utiliser la classe WMI Win32_PingStatus. Comme cela vous êtes d'une part indépendant de la locale et également de la réponse de la commande ping comme l'indique Michel.
Aussi n'y a-t-il pas un setlocal ou endlocal superflu ?. Le endlocal est-il obligatoire ?
Oui, le setlocal à l'intérieur de la boucle est en trop. Si la boucle se répète beaucoup alors vous allez exploser la pile. L'instruction setlocal à le même comportement que le mnémonique assembleur PUSH. Il permet de préserver l'environnement sur la pile puis de le restituer via la commande endlocal (mnémonique assembleur POP).
-- Gilles LAURENT MVP Windows Server - Admin Frameworks http://glsft.free.fr
ben
Bonjour,
Donc un seul setlocal suffit pour plusieurs variables et traitements ?Pour mon cas ?. Apparement le endlocal selon certain cas n'est obligatoire ?.
Cordailement.
Bonjour,
Donc un seul setlocal suffit pour plusieurs variables et traitements ?Pour
mon cas ?.
Apparement le endlocal selon certain cas n'est obligatoire ?.
Donc un seul setlocal suffit pour plusieurs variables et traitements ?Pour mon cas ?. Apparement le endlocal selon certain cas n'est obligatoire ?.
Cordailement.
Gilles LAURENT [MVP]
"ben" wrote:
Bonjour,
Bonjour,
Donc un seul setlocal suffit pour plusieurs variables et traitements ?Pour mon cas ?. Apparement le endlocal selon certain cas n'est obligatoire ?.
Pour un setlocal doit être associé un endlocal
Ci-dessous un petit exemple pour bien comprendre le fonctionnement du couple (setlocal, endlocal). Une première boucle empile l'environnement et la seconde boucle dépile. La variable d'environnement "test" prendra les valeurs de 1 à 10 lors de l'empilage (PUSH) puis de 10 à 1 lors du dépilage (POP).
--- Coupez ici : local.cmd --- @echo off setlocal enabledelayedexpansion
:: empilage (PUSH) for /l %%i in (1,1,10) do ( setlocal set test=%%i echo !test! )
:: dépilage (POP) for /l %%i in (1,1,10) do ( echo !test! endlocal )
endlocal --- Coupez ici : local.cmd ---
-- Gilles LAURENT MVP Windows Server - Admin Frameworks http://glsft.free.fr
"ben" wrote:
Bonjour,
Bonjour,
Donc un seul setlocal suffit pour plusieurs variables et traitements ?Pour
mon cas ?.
Apparement le endlocal selon certain cas n'est obligatoire ?.
Pour un setlocal doit être associé un endlocal
Ci-dessous un petit exemple pour bien comprendre le fonctionnement du couple
(setlocal, endlocal). Une première boucle empile l'environnement et la
seconde boucle dépile. La variable d'environnement "test" prendra les valeurs
de 1 à 10 lors de l'empilage (PUSH) puis de 10 à 1 lors du dépilage (POP).
--- Coupez ici : local.cmd ---
@echo off
setlocal enabledelayedexpansion
:: empilage (PUSH)
for /l %%i in (1,1,10) do (
setlocal
set test=%%i
echo !test!
)
:: dépilage (POP)
for /l %%i in (1,1,10) do (
echo !test!
endlocal
)
endlocal
--- Coupez ici : local.cmd ---
--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr
Donc un seul setlocal suffit pour plusieurs variables et traitements ?Pour mon cas ?. Apparement le endlocal selon certain cas n'est obligatoire ?.
Pour un setlocal doit être associé un endlocal
Ci-dessous un petit exemple pour bien comprendre le fonctionnement du couple (setlocal, endlocal). Une première boucle empile l'environnement et la seconde boucle dépile. La variable d'environnement "test" prendra les valeurs de 1 à 10 lors de l'empilage (PUSH) puis de 10 à 1 lors du dépilage (POP).
--- Coupez ici : local.cmd --- @echo off setlocal enabledelayedexpansion
:: empilage (PUSH) for /l %%i in (1,1,10) do ( setlocal set test=%%i echo !test! )
:: dépilage (POP) for /l %%i in (1,1,10) do ( echo !test! endlocal )
endlocal --- Coupez ici : local.cmd ---
-- Gilles LAURENT MVP Windows Server - Admin Frameworks http://glsft.free.fr