@ECHO OFF
SETLOCAL
SET Version=2.3
:: ***** Begin Script ChangeWINS.cmd *****
GOTO :MAIN
:USAGE
ECHO %~n0 v%Version%
ECHO.
ECHO Changes the WINS settings for all NICs on a Windows computer
ECHO.
ECHO Usage: %~n0 ^<-F^|-L^|-R^>
ECHO %~n0 -F
ECHO.
ECHO -F Fix the current settings: change static settings to
ECHO Primary: %PriWINS%
ECHO Secondary: %SecWINS%
ECHO Tertiary: %TerWINS%
ECHO -L List the current settings; make no changes
ECHO -R Remove the current static settings and resort to DHCP
ECHO.
GOTO :eof
:SetWINSAdds
IF {%1.%2}=={172.26} (
SET PriWINS=172.26.21.86
SET SecWINS=172.23.15.39
SET TerWINS=172.23.15.40
)
IF %3 LSS 141 GOTO :eof
IF %3 GTR 145 GOTO :eof
IF {%1.%2}=={192.168} (
SET PriWINS=192.168.143.25
SET SecWINS=172.23.15.39
SET TerWINS=172.23.15.40
)
GOTO :eof
:2KWINS
IF DEFINED Error GOTO :eof
IF {%1}=={"Internal"} GOTO :eof
IF {%1}=={"Loopback"} GOTO :eof
ECHO Interface %1
ECHO Deleting current WINS settings . . .
netsh inter ip delete wins %1 all
IF ERRORLEVEL 1 (
ECHO ** Error deleting old WINS settings
ECHO ** Aborting
SET Error=True
GOTO :eof
)
IF {%ChangeType%}=={R} GOTO :eof
ECHO Adding new primary WINS server %PriWINS% . . .
netsh inter ip add wins %1 %PriWINS%
IF ERRORLEVEL 1 (
ECHO ** Error adding new primary WINS server
ECHO ** Aborting
SET Error=True
GOTO :eof
)
ECHO Adding new secondary WINS server %SecWINS% . . .
netsh inter ip add wins %1 %SecWINS% index=2
IF ERRORLEVEL 1 (
ECHO ** Error adding new secondary WINS server
ECHO ** Aborting
SET Error=True
)
ECHO Adding new tertiary WINS server %TerWINS% . . .
netsh inter ip add wins %1 %TerWINS% index=3
IF ERRORLEVEL 1 (
ECHO ** Error adding new tertiary WINS server
ECHO ** Aborting
SET Error=True
)
ECHO.
GOTO :eof
:NTWINS
ECHO Interface %1
ECHO Deleting current WINS settings . . .
reg add "HKLM\SYSTEM\CurrentControlSet\Services\NetBT\Adapters\%1" /v NameServer /d "" /f >NUL 2>&1
reg add "HKLM\SYSTEM\CurrentControlSet\Services\NetBT\Adapters\%1" /v NameServerBackup /d "" /f >NUL 2>&1
IF {%ChangeType%}=={R} (
ECHO Renewing DHCP lease . . .
ipconfig /renew >NUL
GOTO :eof
)
ECHO Adding new primary WINS server %PriWINS% . . .
reg add "HKLM\SYSTEM\CurrentControlSet\Services\NetBT\Adapters\%1" /v NameServer /d "%PriWINS%" /f >NUL 2>&1
ECHO Adding new secondary WINS server %SecWINS% . . .
reg add "HKLM\SYSTEM\CurrentControlSet\Services\NetBT\Adapters\%1" /v NameServerBackup /d "%SecWINS%" /f >NUL 2>&1
ECHO.
ECHO This computer must be rebooted to apply these changes.
CALL GetInput "Enter YES to reboot:" Reboot
IF /i {%Reboot%}=={YES} shutdown /l /r /t:5 "%COMPUTERNAME% is shutting down to apply WINS changes." /c
GOTO :eof
:MAIN
SET PATH=\\172.23.15.28\BIN;\\172.23.15.28\SCRIPTS;%PATH%
SET PriWINS=172.23.15.39
SET SecWINS=172.23.15.40
SET TerWINS=172.24.62.50
FOR /f "TOKENS=2,4,5,6 DELIMS=. " %%a IN ('ipconfig ^| FIND "Address"') DO CALL :SetWINSAdds %%b %%c %%d
IF /i {%1}=={-F} (
SET ChangeType=F
GOTO :CheckOS
)
IF /i {%1}=={-L} GOTO :END
IF /i {%1}=={-R} (
SET ChangeType=R
GOTO :CheckOS
)
GOTO :USAGE
:CheckOS
osver -q
IF ERRORLEVEL 5 GOTO :Win2K
IF ERRORLEVEL 4 GOTO :WinNT
ECHO %~n0 can only be run on Windows NT or above.
ECHO.
GOTO :USAGE
:WinNT
ECHO Gathering current WINS settings . . .
FOR /f "TOKENS=*" %%i IN ('ipconfig /all ^| FIND "WINS Server"') DO ECHO %%i
ECHO.
FOR /f "TOKENS=1,2,3 DELIMS= " %%a IN ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards" /s 2^>NUL ^| find "ServiceName"') DO (
FOR /f "SKIP=4 TOKENS=1,2,3 DELIMS= " %%i IN ('reg query "HKLM\SYSTEM\CurrentControlSet\Services\%%c\Parameters\Tcpip" /v "EnableDHCP" 2^>NUL') DO (
IF {%ChangeType%}=={R} (
IF {%%k}=={0x1} CALL :NTWINS %%c
) ELSE (
CALL :NTWINS %%c
)
)
)
GOTO :END
:Win2K
ECHO Gathering current WINS settings . . .
FOR /f "TOKENS=*" %%i IN ('ipconfig /all ^| FIND "WINS Server"') DO ECHO %%i
ECHO.
FOR /f "TOKENS=*" %%a IN ('netsh i sh i ^| \\IC\BIN\perl -e "while (<>) { @a = split(/Dedicated /); print $a[1]; }"') DO (
CALL :2KWINS "%%a"
)
:END
FOR /f "TOKENS=*" %%i IN ('ipconfig /all ^| FIND "WINS Server"') DO ECHO %%i
ECHO Done