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

时间:2012-06-28 16:49:03

标签: 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 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循环 - 我之前已经 了解了这些,但这个循环对我来说看起来很奇怪。

1 个答案:

答案 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
)