更改 IP 和 DNS 的批处理命令
Batch commands to change IP and DNS
我已经写了几个批处理命令来根据选择执行它们。我正在使用 2 个 IP 地址,每次在 IP 之间切换时都必须更改 IPv4 和 DNS。
我已经完成了这段代码,如果我逐行执行它可以正常工作,但在批处理中它们会出错。
@ECHO OFF
SET /P no= Welcome dude so what are you up to press 1 for buzznet,2 for BSNL :
IF "%NO%"=="1" GOTO BUZZ
IF "%NO%"=="2" GOTO BSNL
:BUZZ
netsh interface ipv4 set address name="Ethernet" source=static ^
addr=192.168.22.19 mask=255.255.255.0 gateway=192.168.22.1
netsh interface ip add dns name="Ethernet" addr=192.168.18.1
netsh interface ip add dns name="Ethernet" addr=8.8.8.8 index=2
:BSNL
netsh interface ip set address "Ethernet" dhcp
netsh interface ip set dns “Ethernet” dhcp
pause
如评论中所述,您需要添加一些内容以在作业完成后停止脚本继续。 (goto:EOF
或 exit /b 0
)
@ECHO OFF
:retry
SET /P no= Welcome dude so what are you up to press 1 for buzznet,2 for BSNL :
IF "%no%"=="1" GOTO BUZZ
IF "%no%"=="2" GOTO BSNL
rem if %no% is not 1 nor 2 then exit or goto :retry.
exit /b 0
:BUZZ
netsh interface ipv4 set address name="Ethernet" source=static ^
addr=192.168.22.19 mask=255.255.255.0 gateway=192.168.22.1
netsh interface ip add dns name="Ethernet" addr=192.168.18.1
netsh interface ip add dns name="Ethernet" addr=8.8.8.8 index=2
rem job done, then exit with a pause before
pause
exit /b 0
:BSNL
netsh interface ip set address "Ethernet" dhcp
netsh interface ip set dns "Ethernet" dhcp
pause
最后一个命令格式不正确,引号 “Ethernet”
应该是 "Ethernet"
我在执行脚本以在静态 IP 和动态 IP 之间切换之前检查过这个,所以我想添加我的解决方案以防它有用。
还有两个选项可以检查网络接口的状态和检查当前 IP。
名为“以太网”的接口的所有内容。
因为这个需要运行作为admin,所以我是这样的:这个bat存放在我的文件夹,C:/workset/scripts/ 然后我创建了一个快捷方式,将其复制到桌面上。
然后快捷方式,我去了属性,在那里我以管理员身份检查了 运行 选项,也只是因为,将图标更改为一个很酷的图标。
所以现在我可以像其他任何程序一样从桌面 运行 它并且它从一开始就以管理员身份 运行。
@ECHO OFF
cls
ECHO ________________________________
ECHO Only works if run as admin.
ECHO.
:MENU
ECHO.
ECHO.
ECHO _______________________________
ECHO MENU
ECHO ................................
ECHO Choose an option:
ECHO.
ECHO 1 IP static 192.X.X.X, 255.X,X.X
ECHO 2 IP dynamic
ECHO 3 Check current IP
ECHO 4 Check network interfaces status
ECHO 5 EXIT
ECHO ..................................
ECHO.
ECHO.
SET /P M=Write 1, 2, 3, 4 or 5 and press ENTER:
IF %M%==1 GOTO STATIC
IF %M%==2 GOTO DYNAMIC
IF %M%==3 GOTO CHECK
IF %M%==4 GOTO CHECKIF
IF %M%==5 GOTO EOF
:STATIC
ECHO ______________________________
ECHO.
ECHO Changing IP to 192.X.X.X and subred mask to 255.X.X.X
netsh interface ip set address name= "Ethernet" static 192.X.X.X 255.X.X.X
TIMEOUT /T 2 /NOBREAK > NUL
ECHO ____________________________
netsh interface ip show config name="Ethernet"
TIMEOUT /T 2 /NOBREAK > NUL
GOTO MENU
:DYNAMIC
ECHO _______________________________
ECHO.
ECHO Changing to a dynamic IP...
netsh interface ip set address "Ethernet" dhcp
TIMEOUT /T 4 /NOBREAK > NUL
ECHO _____________________________
netsh interface ip show config name="Ethernet"
TIMEOUT /T 2 /NOBREAK > NUL
GOTO MENU
:CHECK
ECHO __________________________________
ECHO Showing the adapter details...
netsh interface ip show config name="Ethernet"
TIMEOUT /T 2 /NOBREAK > NUL
GOTO MENU
:CHECKIF
ECHO ____________________________________
ECHO Showing the network interface status....
netsh interface ipv4 show interfaces
TIMEOUT /T 2 /NOBREAK > NUL
GOTO MENU
应该有错误处理,但我没有时间,所以就这样了。
另一个注意事项:说实话,最后我只是删除了所有选项并创建了一个更改为静态 IP 和另一个更改为动态 IP 所以现在我只是 运行 它们更快。
我已经写了几个批处理命令来根据选择执行它们。我正在使用 2 个 IP 地址,每次在 IP 之间切换时都必须更改 IPv4 和 DNS。
我已经完成了这段代码,如果我逐行执行它可以正常工作,但在批处理中它们会出错。
@ECHO OFF
SET /P no= Welcome dude so what are you up to press 1 for buzznet,2 for BSNL :
IF "%NO%"=="1" GOTO BUZZ
IF "%NO%"=="2" GOTO BSNL
:BUZZ
netsh interface ipv4 set address name="Ethernet" source=static ^
addr=192.168.22.19 mask=255.255.255.0 gateway=192.168.22.1
netsh interface ip add dns name="Ethernet" addr=192.168.18.1
netsh interface ip add dns name="Ethernet" addr=8.8.8.8 index=2
:BSNL
netsh interface ip set address "Ethernet" dhcp
netsh interface ip set dns “Ethernet” dhcp
pause
如评论中所述,您需要添加一些内容以在作业完成后停止脚本继续。 (goto:EOF
或 exit /b 0
)
@ECHO OFF
:retry
SET /P no= Welcome dude so what are you up to press 1 for buzznet,2 for BSNL :
IF "%no%"=="1" GOTO BUZZ
IF "%no%"=="2" GOTO BSNL
rem if %no% is not 1 nor 2 then exit or goto :retry.
exit /b 0
:BUZZ
netsh interface ipv4 set address name="Ethernet" source=static ^
addr=192.168.22.19 mask=255.255.255.0 gateway=192.168.22.1
netsh interface ip add dns name="Ethernet" addr=192.168.18.1
netsh interface ip add dns name="Ethernet" addr=8.8.8.8 index=2
rem job done, then exit with a pause before
pause
exit /b 0
:BSNL
netsh interface ip set address "Ethernet" dhcp
netsh interface ip set dns "Ethernet" dhcp
pause
最后一个命令格式不正确,引号 “Ethernet”
应该是 "Ethernet"
我在执行脚本以在静态 IP 和动态 IP 之间切换之前检查过这个,所以我想添加我的解决方案以防它有用。
还有两个选项可以检查网络接口的状态和检查当前 IP。
名为“以太网”的接口的所有内容。
因为这个需要运行作为admin,所以我是这样的:这个bat存放在我的文件夹,C:/workset/scripts/ 然后我创建了一个快捷方式,将其复制到桌面上。 然后快捷方式,我去了属性,在那里我以管理员身份检查了 运行 选项,也只是因为,将图标更改为一个很酷的图标。 所以现在我可以像其他任何程序一样从桌面 运行 它并且它从一开始就以管理员身份 运行。
@ECHO OFF cls ECHO ________________________________ ECHO Only works if run as admin. ECHO. :MENU ECHO. ECHO. ECHO _______________________________ ECHO MENU ECHO ................................ ECHO Choose an option: ECHO. ECHO 1 IP static 192.X.X.X, 255.X,X.X ECHO 2 IP dynamic ECHO 3 Check current IP ECHO 4 Check network interfaces status ECHO 5 EXIT ECHO .................................. ECHO. ECHO. SET /P M=Write 1, 2, 3, 4 or 5 and press ENTER: IF %M%==1 GOTO STATIC IF %M%==2 GOTO DYNAMIC IF %M%==3 GOTO CHECK IF %M%==4 GOTO CHECKIF IF %M%==5 GOTO EOF :STATIC ECHO ______________________________ ECHO. ECHO Changing IP to 192.X.X.X and subred mask to 255.X.X.X netsh interface ip set address name= "Ethernet" static 192.X.X.X 255.X.X.X TIMEOUT /T 2 /NOBREAK > NUL ECHO ____________________________ netsh interface ip show config name="Ethernet" TIMEOUT /T 2 /NOBREAK > NUL GOTO MENU :DYNAMIC ECHO _______________________________ ECHO. ECHO Changing to a dynamic IP... netsh interface ip set address "Ethernet" dhcp TIMEOUT /T 4 /NOBREAK > NUL ECHO _____________________________ netsh interface ip show config name="Ethernet" TIMEOUT /T 2 /NOBREAK > NUL GOTO MENU :CHECK ECHO __________________________________ ECHO Showing the adapter details... netsh interface ip show config name="Ethernet" TIMEOUT /T 2 /NOBREAK > NUL GOTO MENU :CHECKIF ECHO ____________________________________ ECHO Showing the network interface status.... netsh interface ipv4 show interfaces TIMEOUT /T 2 /NOBREAK > NUL GOTO MENU
应该有错误处理,但我没有时间,所以就这样了。
另一个注意事项:说实话,最后我只是删除了所有选项并创建了一个更改为静态 IP 和另一个更改为动态 IP 所以现在我只是 运行 它们更快。