我已经批量编写了几个命令来执行它们。我每次在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
答案 0 :(得分:0)
如评论中所述,您需要添加一些可在作业完成时停止脚本的内容。 (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"
答案 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,所以现在我可以更快地运行它们。