我可能做错了什么,但在为构建编写批处理文件时遇到了一个有趣的行为。
我必须编写两条不同的路径,一条用于构建机器,一条用于我的开发机器,以便脚本在测试时正确运行。
所以我有以下内容:
IF EXIST "%PROGRAMFILES%\Parent Path\Path A\Subpath\Filename.exe" (
SET VARNAME=<PATH>
) ELSE (
IF EXIST "%PROGRAMFILES%\Parent Path\Path B\Subpath\Filename.exe" (
SET VARNAME=<PATH>
)
)
在开发机器上,路径应该是路径 B,路径 A 不存在。然而父路径确实存在于两台机器上,并且子路径是相同的。但应用路径不一样。它们是 Windows 中的唯一路径。
在开发机器上,如果我在 IF EXISTS 表达式中包含“Filename.exe”,则即使开发机器上不存在路径 A,该语句始终为路径 A 返回 true。如果我删除 Filename.exe,这就是我解决问题的方法,路径 A 的路径返回 false,路径 B 的路径返回 True。
我假设应用程序已正确安装并且构建系统存在 Filename.exe,因为现在我无法准确测试它。
有没有其他人看到过这样的行为,或者我可以做些什么来改变这种行为?
编辑:我应该提到这是在 Windows XPsp3 上编辑:重新格式化代码以反映我的实际批处理文件格式,并避免其他人因我的快速输入而产生的混淆。假我做了假设:D