更改 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:EOFexit /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 所以现在我只是 运行 它们更快。