【发布时间】:2021-02-14 11:42:08
【问题描述】:
我希望我的 OpenVPN 在启动时自动连接,但前提是我不在家时。在这个社区的一些帮助下,我能够编写一个批处理脚本,应该这样做,但它不断抛出错误“-connect”无法解析为参数,因为找不到“--”,但是有一个“--”。我的错在哪里?
@echo off
set "SSID=Home_Network_SSID"
(netsh wlan show networks mode=ssid | findstr /C:"%SSID%" >nul 2>&1)&&goto :Home
echo "Nicht zu Hause, VPN wird verbunden...
start "OpenVPN" "C:\Program Files\OpenVPN\bin\openvpn-gui.exe" --connect profile.ovpn
timeout /T 5
echo "VPN wurde gestartet"
goto :end
:Home
echo "Heimnetzwerk erkannt, VPN wird nicht verbunden."
timeout /T 5
goto :end
此外,如果我在家,它也会向客户端发起查询,因此它实际上不起作用。 如果我把
"C:\Program Files\OpenVPN\bin\openvpn-gui.exe --connect profile.ovpn"
直接进入cmd,没有问题。
请不要怀疑德国的回声。 非常感谢,
暗钻
【问题讨论】:
-
应该是
findstr /C:"%SSID%"。您的变量中的空格存在很大问题。 -
我建议使用
Start "OpenVPN" "C:\Program Files\OpenVPN\bin\openvpn-gui.exe" --connect profile.ovpn。 这假定profile.ovpn位于当前目录中,或通常由openvpn-gui.exe解析的位置,否则,您可能需要向Start提供/D选项和参数。 (你甚至可能根本不需要使用Start,顺便说一句,"C:\Program Files\OpenVPN\bin\openvpn-gui.exe" --connect profile.ovpn,或者后面的timeout。) -
我试过这个,但没有用。我将在帖子中更改我的代码,所以现在是这样。
-
在删除
@echo off和>nul 2>&1的情况下运行,并检查(和/或共享)输出。 -
@Stephan 我这样做了,问题是里面有个人信息,所以我就不按原来的方式发布了,稍微改动一下,希望还是有用的:`C :\Users\My_Name\Documents>set "SSID=My_SSID" C:\Users\My_Name\Documents>(netsh wlan show networks mode=ssid | findstr /C:"My_SSID" ) && goto :Home SSID 2 : My_SSID Guest_Network SSID 3 : My_SSID C:\Users\My_Name\Documents>echo "Heimnetzwerk erkannt, VPN wird nicht verbunden." “Heimnetzwerk erkannt,VPN wird nicht verbunden。” C:\Users\My_Name\Documents>timeout /T 50 ` 抱歉,格式不正确
标签: windows cmd vpn startup openvpn