Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

test connection resau

7 réponses
Avatar
ben
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.

Quelqu'un a idée de l'erreur ?.

Merci.

Cordialement.

7 réponses

Avatar
MCI (ex do ré Mi chel la si do) [MVP]
Bonjour !


Tu testes le mot "impossible".
Mais, que se passe-t'il, s'il n'apparaît pas ; par exemple, si tu
obtiens :
"Délai d'attente de la demande dépassé"
?

Dans ce cas, tu ne détecteras pas l'erreur.

AMHA, tu devrais inverser, et tester une bonne réponse du ping, pour
sortir de la boucle.


@-salutations

Michel Claveau
Avatar
MCI (ex do ré Mi chel la si do) [MVP]
Re !

Tu peux aussi, à la place du délai dépassé, obtenir : "Défaillance
générale"
Ou d'autres messages.

re @ salutations
--
Michel Claveau
Avatar
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
Avatar
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.
Avatar
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
Avatar
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.
Avatar
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