我有以下批处理文件来检查计算机所在的 IP 范围,以确定是否需要启动 ABC.exe。
这很好用,因为所有 3 个办公地点的第一部分在其 IP 范围的开头共享相同的数字,直到第三个八位字节的第一个数字(10.41.1)我目前只是检查。
@ECHO OFF
SET OFFICE_ALL=10.41.1
REM SET OFFICE_1=10.41.168.
REM SET OFFICE_2=10.41.162.
REM SET OFFICE_3=10.41.172.
REM SET VPN_CONNECTION=10.36.
ipconfig | find /i " %OFFICE_ALL%" >nul 2>nul && (
start C:\ABC-tool\ABC.exe
) || (
exit
)
话虽如此,我们要搬到新位置,网络同事告诉我,新办公室的 IP 范围将变为 10.44.121.x。
我试图像这样调整我的脚本:
@ECHO OFF
SET OFFICE_MOST=10.41.1
REM SET OFFICE_1=10.41.168.
REM SET OFFICE_3=10.41.172.
SET OFFICE_2=10.44.121.
REM SET VPN_CONNECTION=10.36.
ipconfig | find /i " %OFFICE_MOST%" >nul 2>nul && (
start C:\ABC-tool\ABC.exe
) || ipconfig | find /i " %OFFICE_2%" >nul 2>nul && (
start C:\ABC-tool\ABC.exe
) || (
exit
)
但不知何故,这不起作用......我对||的理解 是它之后的代码只有在它之前的代码不成功时才会被执行,所以它基本上就像一个 if-else 构造。但显然还有更多,我无法弄清楚。调整后的代码在哪里以及为什么会出错?