OVH Cloud OVH Cloud

VBS et BATCH

2 réponses
Avatar
Vincent
Bonjour Gilles ! ;-)

Encore moi mes serveurs DHCP ... je suis entrain d'essayer d'intégrer des
commandes batch que vous m'avez fourni dans un VBS et j'avoue que je galère
pas mal. (la raison du VBS est qu'on peut connaitre l''état des services, et
que
je voudrais avoir un seul script qui fait tout !)

Par exemple, je voudrais traiter la ligne suiante:
for /f %%c in (DHCPList.txt) do (netsh dhcp server \\%%c delete class ONYX)

J'utilise le code suivant pour exécuter mes commandes NETSH:
Dim Sh
Set Sh = CreateObject("WScript.Shell")
Sh.run "command /c for /f %%c in (DHCPList.txt) do (netsh dhcp server \\%%c
delete class ONYX)"

Evidemment, ça ne marche pas ! j'imagine que le pb vient de la variable %%c
...

En tout cas, je suis sur que vous Gilles avez la solution :-)

Par avance merci

2 réponses

Avatar
Gilles LAURENT
"Vincent" a écrit dans le message
de news:
| Bonjour Gilles ! ;-)

Bonjour Vincent,

| Encore moi mes serveurs DHCP ... je suis entrain d'essayer d'intégrer
| des commandes batch que vous m'avez fourni dans un VBS et j'avoue que
| je galère pas mal. (la raison du VBS est qu'on peut connaitre l''état
| des services, et que
| je voudrais avoir un seul script qui fait tout !)

Toute la solution a été écrite en batch cmd donc je pense qu'il est plus
judicieux de continuer dans ce sens. Pour la procédure de redémarrage
des services dhcp, je vous propose ci-dessous le portage du script
VBScript en batch :

-- Coupez ici : controlService.cmd --

@echo off
setlocal
pushd %~dp0

:: définition du nom du service à redémarrer
set service=dhcpServer

:: lecture des noms des serveurs dhcp à traiter
for /f %%c in (servers.txt) do (

echo [ ] Processing %%c

:: arrêt du service
sc %%c stop "%service%">nul

:: attente de l'arrêt complet du service
call :_waitForServiceState %%c %service% STOPPED
echo = service %service% stopped

:: redémarrage du service
sc %%c start "%service%">nul

:: attente du redémarrage complet du service
call :_waitForServiceState %%c %service% RUNNING
echo = service %service% running
echo.
)

:: fin de traitement
popd
endlocal
goto :eof

:: procédure utilisée pour attendre que le service spécifié
:: soit dans l'état demandé
:_waitForServiceState

:_loop
sc %1 query %2 | find "%3">nul
if %errorlevel% == 0 goto :eof

:: temporisation
ping 127.255.255.255 -w 500 -n 1> nul 2>&1
goto :_loop

-- Coupez ici : controlService.cmd --

Ce script s'intregra sans difficulté dans la solution existante et le
tout sera homogène. Qu'en pensez-vous ?

--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD
Avatar
Vincent
C'est nickel, mille merci !
En fait j'ai l'habitude de scripter en vbs, mais un batch me va bien ! :-)
Bonne soirée


"Vincent" a écrit dans le message
de news:
| Bonjour Gilles ! ;-)

Bonjour Vincent,

| Encore moi mes serveurs DHCP ... je suis entrain d'essayer d'intégrer
| des commandes batch que vous m'avez fourni dans un VBS et j'avoue que
| je galère pas mal. (la raison du VBS est qu'on peut connaitre l''état
| des services, et que
| je voudrais avoir un seul script qui fait tout !)

Toute la solution a été écrite en batch cmd donc je pense qu'il est plus
judicieux de continuer dans ce sens. Pour la procédure de redémarrage
des services dhcp, je vous propose ci-dessous le portage du script
VBScript en batch :

-- Coupez ici : controlService.cmd --

@echo off
setlocal
pushd %~dp0

:: définition du nom du service à redémarrer
set service=dhcpServer

:: lecture des noms des serveurs dhcp à traiter
for /f %%c in (servers.txt) do (

echo [ ] Processing %%c

:: arrêt du service
sc %%c stop "%service%">nul

:: attente de l'arrêt complet du service
call :_waitForServiceState %%c %service% STOPPED
echo = service %service% stopped

:: redémarrage du service
sc %%c start "%service%">nul

:: attente du redémarrage complet du service
call :_waitForServiceState %%c %service% RUNNING
echo = service %service% running
echo.
)

:: fin de traitement
popd
endlocal
goto :eof

:: procédure utilisée pour attendre que le service spécifié
:: soit dans l'état demandé
:_waitForServiceState

:_loop
sc %1 query %2 | find "%3">nul
if %errorlevel% == 0 goto :eof

:: temporisation
ping 127.255.255.255 -w 500 -n 1> nul 2>&1
goto :_loop

-- Coupez ici : controlService.cmd --

Ce script s'intregra sans difficulté dans la solution existante et le
tout sera homogène. Qu'en pensez-vous ?

--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD