批处理文件 - 无限循环检查vpn连接

时间:2016-03-17 23:26:28

标签: batch-file command-line automation infinite-loop

我有这个批处理文件,可以在连接到vpn时自动执行此过程。它在vpn连接后需要执行一些其他步骤,因此我编写了一个循环,不断检查是否存在vpn连接。但即使vpn连接,它也永远不会脱离循环。请帮忙。

这是相关的代码

"%ProgramFiles(x86)%\Cisco Systems\VPN Client\ipsecdialer.exe" -c -sd -user %username% -pwd %vpn_password% "lifeline-ceacc.elluciancloud.com"

:loop
set length_of_file = 0
("%ProgramFiles(x86)%\Cisco Systems\VPN Client\vpnclient.exe" stat) >_vpnstat.txt
PING -n 5 127.0.0.1>nul
set /p vpnstat=<_vpnstat.txt
call :strlen length_of_file vpnstat
echo %length_of_file%
::del _vpnstat.txt::
IF %length_of_file% LSS 46 goto :loop


::doing some other stuff here::


goto :eof

:strlen <resultVar> <stringVar>
(   
    setlocal EnableDelayedExpansion
    set "s=!%~2!#"
    set "len=0"
    for %%P in (4096 2048 1024 512 256 128 64 32 16 8 4 2 1) do (
        if "!s:~%%P,1!" NEQ "" ( 
            set /a "len+=%%P"
            set "s=!s:~%%P!"
        )
    )
)
( 
    endlocal
    set "%~1=%len%"
    exit /b
)

1 个答案:

答案 0 :(得分:0)

set /p vpnstat=<_vpnstat.txt
IF "%vpnstat:~46%" equ "" goto loop

会更容易......