用于更改IP和DNS的批处理命令

时间:2015-10-09 12:03:05

标签: windows batch-file cmd netsh

我已经批量编写了几个命令来执行它们。我每次在IP之间切换时都使用2个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

enter image description here

2 个答案:

答案 0 :(得分:0)

如评论中所述,您需要添加一些可在作业完成时停止脚本的内容。 (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"

答案 1 :(得分:0)

我在做脚本以在静态IP和动态IP之间进行切换之前检查了此内容,因此我考虑添加解决方案,以防它有用。

  • 还有两个选项可以检查网络接口的状态和检查当前IP。

  • 名为“以太网”的接口的所有内容。

  • 因为这需要以admin身份运行,所以我要做的是:将此蝙蝠存储在我的文件夹C:/ workset / scripts /中,然后创建了一个快捷方式,并将其复制到了桌面上。 然后是快捷方式,转到“属性”,然后检查了“以管理员身份运行”的选项,也只是将其更改为一个漂亮的图标。 因此,现在我可以像其他任何程序一样从桌面运行它了,并且从一开始就以admin身份运行。

     @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,所以现在我可以更快地运行它们。