通过批处理脚本启动windows可执行文件,exe不在程序文件中

通过批处理脚本启动windows可执行文件,exe不在程序文件中,windows,command-line,batch-file,Windows,Command Line,Batch File,这可能是批处理脚本101,但我找不到任何关于为什么会发生这种情况或我的解决方法是否真的是解决方案的清晰解释/文档。因此,基本上任何术语或良好来源的链接都是非常受欢迎的 因此,我有一个程序,我想通过批处理脚本(以及其他几个程序)执行。它是唯一一个exe不在程序文件文件夹中的文件。我可以这样开始: C:\WeirdProgram\WeirdProgramModule\weirdmodule.exe 但我得到一个错误,大致如下: Run-time Error '3024': Could not f

这可能是批处理脚本101,但我找不到任何关于为什么会发生这种情况或我的解决方法是否真的是解决方案的清晰解释/文档。因此,基本上任何术语或良好来源的链接都是非常受欢迎的

因此,我有一个程序,我想通过批处理脚本(以及其他几个程序)执行。它是唯一一个
exe
不在
程序文件
文件夹中的文件。我可以这样开始:

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 C:\WeirdProgram\WeirdProgramModule\
weirdmodule.exe
start "C:\WeirdProgram\WeirdProgramModule\weirdmodule.exe"
什么都不做


谢谢,

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

除此之外,您当前的解决方案可能就是您所面临的问题

至于您使用
start.exe的问题
。。。
start.exe
程序有一种非常奇怪的行为(我认为是奇怪的行为),即当(且仅当)第一个参数在引号中时,将第一个参数作为“标题”放在窗口中。因此,您有两个选择:

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

  • 给出一个空(或其他字符串)标题作为第一个参数。如果路径需要引号,则必须执行以下操作:

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

    • 你做得很完美:-)

      可执行文件可能是在“当前工作目录”中查找此文件,您之前“cd”到该目录时,该目录正在设置中

      您可以通过创建批处理文件的快捷方式手动设置工作目录;右键单击;财产

      编辑:

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

      start "Title" /D "C:\WeirdProgram\WeirdProgramModule\" "weirdmodule.exe"
      
      编辑:

      如果要传递参数,只需将其添加到可执行文件名中,就像在常规快捷方式中一样:

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


      为便于参考,此处描述了语法:

      mdb
      文件就在
      exe
      文件的旁边。我认为,在查找调用它的路径之前,它将查找调用它的路径(如果有意义的话)。当前目录很可能是您正在运行的批处理文件的位置。这就是为什么您的解决方案有效(当前目录已更改为exe)。@Anthony:您是对的,查看应用程序目录通常是有意义的。这是一种常见的技术——尽管我认为通常先查看当前目录,然后再查看应用程序目录。如果用户想要拥有多个数据集,这就给了他们更多的灵活性。不幸的是,无论是谁编写了这个程序,使它具有应有的灵活性,你都将任由其摆布。你将因为向我展示如何在一行中执行而获得答案奖励。从你们两人的话来看,一切都是一样的,但我的上级想要的是像鼓一样紧的东西。我怎样才能把论点传递给古怪的模块?我根据参考链接中描述的可能性更新了答案。由于我周围没有windows box,因此无法测试它>:C@PhilRykoff我知道这是一个老问题,但我如何监控以这种方式启动的程序?我想做一个标题查找,以便杀死。