tobsik
06-10-2016, 09:20
Доброго дня всем. Есть один скриптик, он получает данные из реестра, и если ip адрес компьютера получен по DHCP, то прописывает его статически (необходимо все компьютеры в сети перевести на статику) Но скрипт как-то криво работает. А именно не получается сделать условие, получен ли ip по dhcp или присвоен статически.
@echo off
setlocal enabledelayedexpansion
set IFACE="LAN"
set mask=255.255.252.0
set gateway=192.168.36.1
set dns1=192.168.36.2
set dns2=192.168.36.7
set GWMETRIC=1
set "i=0"
for /f "delims=" %%i in ('ipconfig /all') do (
set "arr.!i!=%%i"
set /a "i+=1"
)
set "key=HKLM\SYSTEM\CurrentControlSet\services"
set "key=%key%\Tcpip\Parameters\Interfaces"
for /f %%i in ('reg query %key%') do (
for /f "tokens=3" %%j in (
'2^>nul reg query "%%i" /v DhcpIpAddress'
) do (
if /i "%%j" neq "0.0.0.0" (
set "ip=%%j"
for /f "tokens=2 delims==. " %%k in (
'set arr ^| findstr /rc:"%%j"'
) do set /a "n=%%k-2"
for /f "tokens=2 delims=:" %%k in (
'set arr.!n!'
) do set "dhcp=%%k"
)
)
)
chcp 1251>nul
if /i "%dhcp: =%" equ "нет" (
set "res=NO"
) else (set "res=YES")
chcp 866>nul
if /i "%res%" equ "yes" (
rem прописываем ip адрес
echo:%ip% %mask% %gateway%
netsh interface ip set address name=%IFACE% source=static addr=%IP% mask=%MASK% gateway=%GATEWAY% gwmetric=%GWMETRIC%
netsh interface ip set dnsservers name=%IFACE% source=static address=%DNS1% register=PRIMARY validate=no
netsh interface ip add dnsservers name=%IFACE% address=%DNS2% validate=no
ping ya.ru
ECHO: %COMPUTERNAME% %username% %ip% >> \\192.168.36.12\All\ОИТ\logs\%COMPUTERNAME%.txt
goto:eof
)
endlocal
exit /b
укажите пожалуйста на ошибку. заранее спасибо
@echo off
setlocal enabledelayedexpansion
set IFACE="LAN"
set mask=255.255.252.0
set gateway=192.168.36.1
set dns1=192.168.36.2
set dns2=192.168.36.7
set GWMETRIC=1
set "i=0"
for /f "delims=" %%i in ('ipconfig /all') do (
set "arr.!i!=%%i"
set /a "i+=1"
)
set "key=HKLM\SYSTEM\CurrentControlSet\services"
set "key=%key%\Tcpip\Parameters\Interfaces"
for /f %%i in ('reg query %key%') do (
for /f "tokens=3" %%j in (
'2^>nul reg query "%%i" /v DhcpIpAddress'
) do (
if /i "%%j" neq "0.0.0.0" (
set "ip=%%j"
for /f "tokens=2 delims==. " %%k in (
'set arr ^| findstr /rc:"%%j"'
) do set /a "n=%%k-2"
for /f "tokens=2 delims=:" %%k in (
'set arr.!n!'
) do set "dhcp=%%k"
)
)
)
chcp 1251>nul
if /i "%dhcp: =%" equ "нет" (
set "res=NO"
) else (set "res=YES")
chcp 866>nul
if /i "%res%" equ "yes" (
rem прописываем ip адрес
echo:%ip% %mask% %gateway%
netsh interface ip set address name=%IFACE% source=static addr=%IP% mask=%MASK% gateway=%GATEWAY% gwmetric=%GWMETRIC%
netsh interface ip set dnsservers name=%IFACE% source=static address=%DNS1% register=PRIMARY validate=no
netsh interface ip add dnsservers name=%IFACE% address=%DNS2% validate=no
ping ya.ru
ECHO: %COMPUTERNAME% %username% %ip% >> \\192.168.36.12\All\ОИТ\logs\%COMPUTERNAME%.txt
goto:eof
)
endlocal
exit /b
укажите пожалуйста на ошибку. заранее спасибо