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

Zac*_*lem 2 vpn 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.
Run Code Online (Sandbox Code Playgroud)

正如我所说,这可行,但 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
Run Code Online (Sandbox Code Playgroud)

我最近一直在尝试将各种选项存储为变量以使更改更容易,并让用户输入一些用户名和密码。一旦我整理了最初的部分,这就是最终的进展。

Sac*_*Dee 5

您可以使用条件运算符&&||如下所示:

ipconfig|find /i "VPN" && GOTO startAPP || GOTO connectVPN
Run Code Online (Sandbox Code Playgroud)

或者

ipconfig|find /i "VPN" 

if %errorlevel%==1 goto:connectVPN

echo Starting APP !
exit/b

:connectVPN
echo connecting to VPN
Run Code Online (Sandbox Code Playgroud)