在批处理文件中检查 VPN 状态

Checking for VPN state in Batch File

我希望创建一系列批处理文件,在启动 VPN 之前检查特定 VPN 的状态(如果尚未启动)运行,并最终启动特定应用程序。

我有一个工作示例,但我正在尝试将其修改为学习练习和实际扩展。

我目前正在使用 ipconfig 和管道连接到 find/i 并寻找 VPN 名称,强制断开连接然后重新连接。

我也想这样做,但如果 VPN 已启动,请跳过断开连接。

工作示例:

@echo OFF
::Check to see if the VPN is already connected and disconnect it
echo Checking for VPN connection...

@ipconfig|find/i "myVPN" && rasdial myVPN /disconnect
echo.
echo.

::Connect to the VPN server
@rasdial.exe myVPN "username" "password"
echo.
echo.

如我所说,这可行,但 VPN 的强制断开会扰乱一些可能通过 VPN 运行 的其他服务,正如您可以想象的那样。

这就是我一直在玩的东西,但我似乎卡住了,一无所获,非常感谢您的建议!

进度:

@echo OFF

::Check to see if the VPN is already connected and disconnect it
echo Checking for VPN connection...
IF @ipconfig|find/i "VPN" (GOTO startAPP) ELSE (GOTO connectVPN)
echo.
echo.

::Connect to the VPN server
:connectVPN
echo Connecting VPN
@rasdial.exe VPN "username" "password"
echo.
echo.
GOTO startAPP

:startAPP
echo Starting App
@C:\app.ext

:END

我最近一直在尝试将各种选项存储为变量以简化更改,并让用户输入一些用户名和密码。这是最终的进展,一旦我对这个初始部分进行了排序。

您可以像这样使用条件运算符 &&|| :

ipconfig|find /i "VPN" && GOTO startAPP || GOTO connectVPN

ipconfig|find /i "VPN" 

if %errorlevel%==1 goto:connectVPN

echo Starting APP !
exit/b

:connectVPN
echo connecting to VPN