我只想使用相同的脚本在32位和64位系统之间打开文件。所以我想使用IF EXISTS
来阻止cannot locate error
这个脚本应该非常简单易用,但我遇到了一些问题。
if exist "C:\Program Files (x86)\Expro4\Expro4.exe" (
Start "C:\Program Files (x86)\Expro4\Expro4.exe")
if exist "C:\Program Files\Expro4\Expro4.exe" (
Start "C:\Program Files\Expro4\Expro4.exe")
我尝试了不同的变化,但这个特别做了一些奇怪的事情。在运行时,它会打开一个发送到该文件位置的命令提示符。我可以说代码的if exist
段正在运行,因为它是基于操作系统正确处理的。
为什么我不能使这个简单的脚本工作的任何想法?
答案 0 :(得分:1)
如果系统是64位,您的示例将运行Expro4.exe
两次,如果它存在于两个目录中 - 您应该包含else语句。
但是,您应该使用start
-
call
if exist "C:\Program Files (x86)\Expro4\Expro4.exe" (
Call "C:\Program Files (x86)\Expro4\Expro4.exe"
) else if exist "C:\Program Files\Expro4\Expro4.exe" (
Call "C:\Program Files\Expro4\Expro4.exe"
)
或者您可以使用start /D "path"
。
问题在于您使用start
-
C:\>start /?
Starts a separate window to run a specified program or command.
START ["title"] [/D path] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED]
[/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL]
[/NODE <NUMA node>] [/AFFINITY <hex affinity mask>] [/WAIT] [/B]
[command/program] [parameters]
"title" Title to display in window title bar.
您的路径被设置为新窗口的标题,并且您实际上并未指定任何脚本在没有/D
的情况下启动。
start
和call
之间的区别在于前者使用单独的窗口而后者使用相同的窗口 - 在呼叫完成之前保持打开状态。您可以选择使用哪种。
答案 1 :(得分:0)
更简单:
如果存在路径\ 1.exe start / wait path \ 1.exe
其中1.exe是静默安装程序,也使用详细来忽略错误