代码之家  ›  专栏  ›  技术社区  ›  Anthony

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

  •  9
  • Anthony  · 技术社区  · 15 年前

    这可能是批处理脚本101,但我找不到任何明确的解释/文档来解释为什么会发生这种情况,或者我的解决方案是否真的是解决方案。因此,基本上任何术语或到好的来源的链接都是值得赞赏的。

    所以我有一个程序,我想通过批处理脚本(连同其他几个程序)来执行。这是唯一一个 exe 不在A中 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"
    

    什么都不做。

    谢谢,

    2 回复  |  直到 9 年前
        1
  •  17
  •   Phil Rykoff    12 年前

    你做得很好:-)

    可执行文件可能正在“当前工作目录”中查找此文件,当您以前对其进行“cd”时,该目录正在被设置。

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

    编辑:

    您还可以使用 start 命令:

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

    编辑:

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

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

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

    这里介绍的语法仅供参考: http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/ntcmds.mspx?mfr=true .

        2
  •  5
  •   Michael Burr    15 年前

    发生什么事了? weirdmodule.exe 正在“当前目录”中查找 .mdb 文件。你也许可以告诉它在哪里可以找到 MDB 通过命令行参数或其他配置方法(可能是注册表或.ini文件)进行文件。如何指定位置完全取决于 怪异模块.exe 但是,程序。

    除此之外,你目前的工作环境可能就是你所坚持的。

    就你的使用问题而言 start.exe …这个 开始.exe 程序有一种非常非常奇怪的行为(我认为这是一种奇怪的行为),它将第一个参数视为“标题”,如果(并且仅当)第一个参数在引号中,则将其放入窗口。所以你有几个选择:

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

      start C:\WeirdProgram\WeirdProgramModule\weirdmodule.exe
      
    • 将空(或其他字符串)标题作为第一个参数。如果路径需要引号,则必须执行以下操作:

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