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

Batch Script Error on Set /P

我正在尝试让脚本在检测到是否存在活动的互联网连接时执行某些操作。这就是我想出的,但是当其中一个 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"(

打字错误

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 设置为用户的输入。