Ant*_*ony 9 windows command-line batch-file
这可能是批处理脚本101,但我找不到任何明确的解释/文档,说明为什么会发生这种情况,或者我的解决方法实际上是解决方案.因此,基本上任何术语或与良好来源的链接都非常受欢迎.
所以我有一个程序,我想通过批处理脚本(以及其他几个程序)执行.它是唯一一个exe
不在Program Files
文件夹中的人.我可以这样开始:
C:\WeirdProgram\WeirdProgramModule\weirdmodule.exe
Run Code Online (Sandbox Code Playgroud)
但我得到一个错误:
Run-time Error '3024':
Could not find file
C:\Users\MyUserName\Desktop\ModuleSettings.mdb
Run Code Online (Sandbox Code Playgroud)
因此,程序似乎正在从批处理脚本启动的同一位置查找其设置文件.鉴于我通过执行以下操作终于完成了所有工作:
cd C:\WeirdProgram\WeirdProgramModule\
weirdmodule.exe
Run Code Online (Sandbox Code Playgroud)
这很好,并且不得不走这条路(这只是一条额外的路线)并不是世界末日,但我已经说服自己,由于缺乏基本的理解,我做错了.
任何人都知道或可以指出为什么它这样工作?
哦,并做以下事情:
start "C:\WeirdProgram\WeirdProgramModule\weirdmodule.exe"
Run Code Online (Sandbox Code Playgroud)
什么都不做.
谢谢,
Phi*_*off 17
你做得很完美:-)
可执行文件可能正在"当前工作目录"中查找此文件,该文件正在设置之前,当您"cd"之前.
您可以通过创建批处理文件的快捷方式手动设置工作目录; 右键点击; 属性.
编辑:
您还可以使用以下start
命令设置当前工作目录:
start "Title" /D "C:\WeirdProgram\WeirdProgramModule\" "weirdmodule.exe"
Run Code Online (Sandbox Code Playgroud)
编辑:
如果您想传递params,只需将它们添加到可执行文件名中,就像在常规快捷方式中一样:
start "Title" /D "C:\WeirdProgram\WeirdProgramModule\" "weirdmodule.exe" "param1 param2"
Run Code Online (Sandbox Code Playgroud)
要么
start "Title" /D "C:\WeirdProgram\WeirdProgramModule\" "weirdmodule.exe param1 param2"
Run Code Online (Sandbox Code Playgroud)
作为参考,此处描述了语法:http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/ntcmds.mspx?mfr = true.
发生的事情是weirdmodule.exe
查看.mdb
文件的"当前目录" .您可以.mdb
通过命令行参数或其他一些配置方法(可能是注册表或.ini文件)告诉它在哪里找到该文件.但是,如何指定位置完全取决于weirdmodule.exe
程序.
除此之外,您目前的解决方法可能就是您所坚持的.
至于你使用的问题start.exe
... start.exe
程序有非常非常奇怪的行为(在我看来是奇怪的行为)将第一个参数视为放入窗口的"标题"if(并且仅当)第一个参数在引号中.所以你有几个选择:
不要使用引号来指定程序.这对你有用,因为你不需要引号(路径中没有任何空格或其他特殊字符需要引用它):
start C:\WeirdProgram\WeirdProgramModule\weirdmodule.exe
Run Code Online (Sandbox Code Playgroud)将空(或其他字符串)标题作为第一个参数.如果您的路径需要引用,则必须执行以下操作:
start "" "C:\WeirdProgram\WeirdProgramModule\weirdmodule.exe"
Run Code Online (Sandbox Code Playgroud)