注意:我几乎不知道批处理文件'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
我正在尝试编写一个利用HMA的强大IP转换器! Pro VPN - 无论VPN客户端是否已打开,以及VPN当前是否打开都应该有效,并且应该暂停,直到VPN连接完毕。
如果你谷歌for循环,你会看到它出现在stackoverflow答案 - 这个for循环在CMD提示中完全正常,并将%state%设置为Connected / Disconnected,但是在批处理文件中,抛出以下错误:
D"=="Local was unexpected at this time.
如果我没有按照非常严格的时间表进行循环,我会更多地了解for循环 - 我之前已经 了解了这些,但这个循环对我来说看起来很奇怪。
答案 0 :(得分:10)
在批处理文件中,您必须使用两个百分比来表示FOR
个参数,这就是
for /f "usebackq tokens=1,2,3,*" %%A in (`netsh interface show interface`) do (
if "%%D"=="Local Area Connection 2" set state=%%B
)