8

注意:我几乎不知道批处理文件“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 循环的知识——我之前已经了解过这些,但是这个循环对我来说看起来很奇怪。

4

1 回答 1

11

在批处理文件中,您必须使用 2% 作为FOR参数,仅此而已

for /f "usebackq tokens=1,2,3,*" %%A in (`netsh interface show interface`) do (
    if "%%D"=="Local Area Connection 2" set state=%%B
)
于 2012-06-28T17:16:54.230 回答