我想在资源管理器中打开网络驱动器。网络驱动器托管在一台 PC 上,有时通过 WLAN 连接,有时通过 LAN 连接。因此,它有两个不同的 IP。我不知道 PC 何时通过其中一个连接。
使用快捷方式打开驱动器有两个缺点。
- 显然,如果 PC 不存在于第一个快捷方式网络地址,我必须尝试两者。
- 如果我打开一个不存在(临时)的驱动器的快捷方式,那么资源管理器将冻结大约 30 秒。
所以我编写了一个包含以下命令的批处理:
@echo off
echo try LAN
if not exist \\<IPLAN>\Buecherei$\. (goto WLAN)
explorer \\<IPLAN>\Buecherei$\.
goto end
:WLAN
echo try WLAN
if not exist \\<IPWLAN\Buecherei$\. (goto end)
explorer \\<IPWLAN>\Buecherei$\.
goto end
:end
但是,如果 PC 通过 WLAN 连接,并且我启动批处理文件,则开始查找基于 WLAN-IP 地址的文件夹路径也需要相当长的时间。我该如何消除这种延迟?
答案1
您可以使用ping
和%errorlevel%
来检查网络是否可用。这样,您可以快速进行检查。
以下是编写脚本的方法。将 IP 地址替换为实际地址。
@echo off
:: -- Lets check which network is available.
echo try LAN
:: -- We'll ping the address with a timeout of 30ms exactly 1 times, but hide the ping to the user
ping 12.34.56.78 -n 1 -w 30 > nul
:: -- Now, lets find out if the destination was reached or not.
:: -- %errorlevel% will return 0 when it was reached, 1 when it timed out.
if %errorlevel%==0 goto LAN
:: -- If we reached here, LAN was not available. Trying WLAN...
echo try WLAN
:: -- We'll ping the address with a timeout of 30ms exactly 1 times, but hide the ping to the user
ping 87.65.43.21 -n 1 -w 30 > nul
:: -- Now, lets find out if the destination was reached or not.
:: -- %errorlevel% will return 0 when it was reached, 1 when it timed out.
if %errorlevel%==0 goto WLAN
:: -- If we reached here, WLAN was not available either. We'll just quit the script.
goto end
:LAN
:: -- open the explorer
explorer \\12.34.56.78\Buecherei$\.
goto end
:WLAN
:: -- open the explorer
explorer \\87.65.43.21\Buecherei$\.
goto end
:end
答案2
更好的解决方案是使用 DNS 名称,并让 DHCP 服务器更新 DNS 名称。
因此,\\<IPLAN>\ or \\<IPWAN>\
您改用 \\SERVERNAME\,然后网络会进行 DNS 查找并获取正确的值,然后就完成了。