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

FORバッチファイルでは、パラメータに2パーセントを使用する必要があります。それだけです。

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 に答える