通过批处理脚本启动Windows可执行文件,exe不在Program Files中

这可能是批处理脚本101,但我无法find任何清楚的解释/文档为什么发生这种情况,或者如果我的解决方法实际上是解决scheme。 所以基本上任何术语或链接到良好的来源,真的很感激。

所以我有一个程序,我想通过批处理脚本(以及其他几个程序)来执行。 这是唯一一个exe Program Files不在Program Files夹中的地方。 我可以这样开始:

 C:\WeirdProgram\WeirdProgramModule\weirdmodule.exe 

但是我得到了一个错误:

 Run-time Error '3024': Could not find file C:\Users\MyUserName\Desktop\ModuleSettings.mdb 

所以看起来程序正在从批处理脚本启动的相同位置查找它的设置文件。 鉴于我终于通过下面的工作得到了一切工作:

 cd C:\WeirdProgram\WeirdProgramModule\ weirdmodule.exe 

这很好,而且不必走这条路(只有一条路线),但是我确信自己由于缺乏基本的理解而做错了事情。

有人知道或可以指出我为什么这样工作吗?

哦,并做以下几点:

 start "C:\WeirdProgram\WeirdProgramModule\weirdmodule.exe" 

根本没有做任何事情。

谢谢,

你正在做的完美:-)

可执行文件可能是在“当前工作目录”中查找这个文件,这个文件正在被设置,当你“cd”之前。

您可以通过创建批处理文件的快捷方式来手动设置工作目录; 右键点击; 属性。

编辑:

您也可以使用start命令设置当前的工作目录:

 start "Title" /D "C:\WeirdProgram\WeirdProgrammodulee\" "weirdmodule.exe" 

编辑:

如果您想传递参数,只需将它们添加到可执行文件名即可:

 start "Title" /D "C:\WeirdProgram\WeirdProgrammodulee\" "weirdmodule.exe" "param1 param2" 

要么

 start "Title" /D "C:\WeirdProgram\WeirdProgrammodulee\" "weirdmodule.exe param1 param2" 

作为参考,语法在这里描述: http : //www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/ntcmds.mspx?mfr=true 。

发生什么事情是, weirdmodule.exe正在寻找.mdb文件的“当前目录”。 您可以通过命令行参数或其他配置方法(可能是注册表或.ini文件)来告诉它在哪里找到.mdb文件。 但是,如何指定位置完全取决于weirdmodule.exe程序。

除此之外,你目前的解决方法可能是你坚持。

至于你使用start.exe的问题… start.exe程序有非常非常奇怪的行为(在我看来奇怪的行为)把第一个参数作为“标题”放在窗口if(和只有)第一个参数在引号中。 所以你有几个选择:

  • 不要使用引号来指定程序。 这适用于你,因为你不需要报价(路径中没有任何空格或其他特殊字符需要引用它):

     start C:\WeirdProgram\WeirdProgrammodulee\weirdmodule.exe 
  • 给一个空的(或其他字符串)标题作为第一个参数。 如果你的路径需要引号,这是你必须做的事情:

     start "" "C:\WeirdProgram\WeirdProgrammodulee\weirdmodule.exe"