If statement BAT:使DNS自动更改的脚本
我来自美国,我很喜欢Netflix。这就是为什么我坚持只需单击一下就可以更改我的DNS。我写了一些代码,但它不起作用,我不知道为什么不起作用。这是:If statement BAT:使DNS自动更改的脚本,if-statement,cmd,dns,netsh,If Statement,Cmd,Dns,Netsh,我来自美国,我很喜欢Netflix。这就是为什么我坚持只需单击一下就可以更改我的DNS。我写了一些代码,但它不起作用,我不知道为什么不起作用。这是: `Echo On IF netsh interface ipv4 set dnsserver "Wi-Fi" source=dhcp==netsh interface ipv4 set dnsserver "Wi-Fi" source=dhcp DO ( netsh interface ipv4 add dnsserver "Wi-Fi" 123.
`Echo On
IF netsh interface ipv4 set dnsserver "Wi-Fi" source=dhcp==netsh interface ipv4 set dnsserver "Wi-Fi" source=dhcp DO (
netsh interface ipv4 add dnsserver "Wi-Fi" 123.123.123.123
netsh interface ipv4 add dnsserver "Wi-Fi" 123.123.123.124 index=2
ECHO DNS has changed to specific.
)
ELSE (
netsh interface ipv4 set dnsserver "Wi-Fi" source=dhcp
ECHO DNS has changed to automatic.
)
ipconfig /flushdns
`
甚至无法检查出什么问题,因为cmd会自动退出。
每一个命令都起作用,所以我搞砸了“如果”?
我们将不胜感激
a) 如果可能有空格,请将字符串括在qoutes中
b) 如果if
c) )
和其他
和(
必须在同一物理线路上:
) else (
我喜欢我的问题,多亏了你,我找到了一个解决方案。我使用文件比较命令以我想象的方式完成了这项工作。它是:
@echo off
REM At first, define an interface you're using by command "netsh interface ipv4 show dnsserver".
REM Depends on language the names could be diffrent.
REM Example: Wireless Network Connection / Local Area Connection / Wi-Fi
set INTERFACE=Wi-Fi
set DNS1=123.123.123.123
set DNS2=123.123.123.124
REM Here we goes:
netsh interface ipv4 show dnsserver "%INTERFACE%" > C:\DNS.txt
fc /b DNS.txt DNX.txt > nul
IF errorlevel 1 (
netsh interface ipv4 set dnsserver "%INTERFACE%" source=dhcp
ECHO DNS has changed to automatic.
ECHO.
) else (
netsh interface ipv4 add dnsserver "%INTERFACE%" %DNS1%
netsh interface ipv4 add dnsserver "%INTERFACE%" %DNS2% index=2
ECHO DNS has changed to static.
ECHO.
)
ipconfig /flushdns > nul
netsh interface ipv4 show dnsserver "%INTERFACE%" > DNX.txt
pause
它似乎在工作:)再次感谢您的帮助:)基本故障排除:a)在上运行echo(您做到了-很好)b)从cmd
prompt(“Dos框”)启动它,而不是双击它,因此窗口在出现错误时保持打开状态,让您读取它们。现在它工作了,但它没有以我预期的方式运行。是否有任何表达式使我的命令exqual的结果成为书面数据?排序:C:/Users/Administrator>netsh interface ipv4 show“Wi-Fi”
接口Wi-Fi的配置:
通过DHCP配置的DNS服务器:192.168.2.1
注册后缀:Primary only
我的意思是,如果“netsh interface ipv4 show”Wi-Fi,我想使用:“=
此命令在上面重写的结果,(…)
,那么它将以正确的方式工作
@echo off
REM At first, define an interface you're using by command "netsh interface ipv4 show dnsserver".
REM Depends on language the names could be diffrent.
REM Example: Wireless Network Connection / Local Area Connection / Wi-Fi
set INTERFACE=Wi-Fi
set DNS1=123.123.123.123
set DNS2=123.123.123.124
REM Here we goes:
netsh interface ipv4 show dnsserver "%INTERFACE%" > C:\DNS.txt
fc /b DNS.txt DNX.txt > nul
IF errorlevel 1 (
netsh interface ipv4 set dnsserver "%INTERFACE%" source=dhcp
ECHO DNS has changed to automatic.
ECHO.
) else (
netsh interface ipv4 add dnsserver "%INTERFACE%" %DNS1%
netsh interface ipv4 add dnsserver "%INTERFACE%" %DNS2% index=2
ECHO DNS has changed to static.
ECHO.
)
ipconfig /flushdns > nul
netsh interface ipv4 show dnsserver "%INTERFACE%" > DNX.txt
pause