@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