我需要使用批处理文件在线/启动时检查vpn连接。
实际上我使用此代码:
PING -n 5 www.google.com|FIND /I "TTL">NUL
IF NOT "%ERRORLEVEL%"=="1" (
Echo "Vpn Connection Is Up"
)
IF "%ERRORLEVEL%"=="1" (
Echo "Vpn Connection Is Down"
)
有时候ping会给出无响应或给出一般的失败响应。
我想知道有比ping命令更好的批处理代码。
我尝试了这种备用代码,但是在联机/启动时无法识别vpn,因为适配器始终安装在我的PC中。
第一个备用代码:
ipconfig|find /i "VPN" && GOTO startAPP || GOTO connectVPN
第二个备用代码:
ipconfig|find /i "VPN"
if %errorlevle%==1 goto:connectVPN
echo Starting APP !
exit/b
:connectVPN
echo connecting to VPN
第三种备用代码:
:start
cls
rasdial | find /I "%vpnname%" > nul
if errorlevel 1 goto vpndown
if errorlevel 0 goto vpnup
您能建议将ping的替代命令集成到我的批处理代码中吗?
vpn连接在线时,备用代码无法识别,它可以识别我的电脑中是否安装了适配器,但是我需要知道vpn何时在线/启动(准备上网)。
答案 0 :(得分:1)
执行此操作的最佳方法是使用netsh wlan show networks
。此命令将显示您当前连接的网络适配器。我们可以使用find /I "VPN"
查看您的 VPN 当前已连接。 %ERRORLEVEL%
将允许您提取是/否。
Is-VPN-Up.Bat:
netsh wlan show networks | FIND "VPN" /I /C >NUL
IF Not "%ERRORLEVEL%"=="1" (
Echo "Vpn Connection Is Up"
) ELSE (
Echo "Vpn Connection Is Down"
)
答案 1 :(得分:0)
我认为,如果将Powershell合并到批处理中(或单独使用Powershell),则可以查看连接是否建立。
$array->fund
您也可以先对google进行ping操作,然后如果发现问题,对网关执行ping操作,如果有问题,请检查连接,几乎就像这样:
@echo off
for /f "tokens=2" %%i in ('powershell "Get-NetAdapter | select Name,Status" ^| findstr /i "Wifi"') do (
if /i "%%i"=="up" echo VPN %%i
if /i "%%i"=="down" echo VPN %%i
)
答案 2 :(得分:0)
另一种方法是使用rasdial
命令,该命令用于VPN连接。特别是,使用:
@echo off
rasdial | findstr /ic:"No" >nul
if not %errorlevel% EQU 0 (
echo Found a VPN connection!
goto :found
) else (
echo We didn't find any VPN connections!
goto :notfound
)
:found
rem Do something if a VPN connection is found/online:
:notfound
rem Do something if a VPN connection isn't found/online: