For loop for循环在CMD提示符下工作,但不在批处理文件中-for循环已复制粘贴

For loop for循环在CMD提示符下工作,但不在批处理文件中-for循环已复制粘贴,for-loop,batch-file,vpn,For Loop,Batch File,Vpn,注意:我几乎完全不知道批处理文件“for”循环是如何工作的 我当前拥有的批处理文件: "C:\Program Files (x86)\HMA! Pro VPN\bin\HMA! Pro VPN.exe" -connect "C:\Program Files (x86)\HMA! Pro VPN\bin\HMA! Pro VPN.exe" -changeip ping -w 2000 -n 1 1.1.1.1 :wait for /f "usebackq tokens=1,2,3,*" %A

注意:我几乎完全不知道批处理文件“for”循环是如何工作的

我当前拥有的批处理文件:

"C:\Program Files (x86)\HMA! Pro VPN\bin\HMA! Pro VPN.exe" -connect
"C:\Program Files (x86)\HMA! Pro VPN\bin\HMA! Pro VPN.exe" -changeip  
ping -w 2000 -n 1 1.1.1.1
:wait
for /f "usebackq tokens=1,2,3,*" %A in (`netsh interface show interface`) do @if "%D"=="Local Area Connection 2" set state=%B
if %state%==Connected goto :end
goto :wait
:end
我正试图写一个强大的IP转换器,利用HMA!Pro VPN-无论VPN客户端是否已打开,以及VPN当前是否已打开,它都应该工作,并且应该暂停,直到VPN已连接

如果您在Google上搜索for循环,您将看到它出现在stackoverflow答案中-此for循环在CMD提示符下运行良好,并将%state%设置为Connected/Disconnected,但在批处理文件中,会抛出以下错误:

D"=="Local was unexpected at this time.

如果我不是在一个非常紧凑的时间表下,我会在批处理中学习更多关于for循环的知识-我以前已经了解过这些,但是这个循环在我看来非常奇怪

在批处理文件中,参数的
必须使用两个百分比,仅此而已

for /f "usebackq tokens=1,2,3,*" %%A in (`netsh interface show interface`) do (
    if "%%D"=="Local Area Connection 2" set state=%%B
)

我总是习惯于使用%var%,从来没有在批处理中完全深入到复杂的%符号中。不过非常感谢,它起了作用:这是一个很可能的复制品