If statement BAT:使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.

我来自美国,我很喜欢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.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