Set / P上的批处理脚本错误

时间:2017-08-22 00:14:53

标签: batch-file syntax-error netsh

当我检测到是否存在活动的互联网连接时,我试图让脚本执行某些操作。这就是我提出的问题,但是如果其中一个if语句没有运行,我会收到语法错误。

for /f "delims=" %%a in ('netsh interface show interface ^| find /I "Enabled        Connected"') do @set netsh_output=%%a

SET /P internet_connected="false" 
IF "%netsh_output%"=="Enabled        Connected      Dedicated        WiFi" (
  SET /P internet_connected="true"
)

IF "%netsh_output%"=="Enabled        Disconnected   Dedicated        Ethernet" (
  SET /P internet_connected="true"
)

if "%internet_connected%"=="true"(
  ECHO connected

)

当我有Wifi时它可以正常工作但看到我没有以太网而第二个没有运行它会无缘无故地引发语法错误。我没有看到我应该做的事情吗?

C:\Users\ohheyit'sme\Desktop>IF "Enabled        Connected      Dedicated        WiFi" == "Enabled        Connected      Dedicated        WiFi" (SET /P internet_connected="true" )
true

C:\Users\ohheyit'sme\Desktop>IF "Enabled        Connected      Dedicated        WiFi" == "Enabled        Disconnected   Dedicated        Ethernet" (SET /P internet_connected="true" )
The syntax of the command is incorrect.
C:\Users\ohheyit'sme\Desktop>if "false"=="true"(

1 个答案:

答案 0 :(得分:1)

印刷错误

if "%internet_connected%"=="true"(

应该是

if "%internet_connected%"=="true" (
IF "%netsh_output%"=="Enabled        Disconnected   Dedicated        Ethernet" (

应该是

IF "%netsh_output%"=="Enabled        Connected   Dedicated        Ethernet" (

误用set /p

如果您想设置变量,不要求输入,请不要使用/p标记

set Foo=Bar

这会将变量Foo设置为Bar

set /p Foo=Bar

这会将变量Foo设置为用户的输入。