创建一个批处理文件来运行一个.exe文件,并且加上一个附加参数。

38

我需要一个批处理文件,它将执行以下操作:

1. Open CMD and navigate to a location C:/Users/...../program.exe
2. Run the program.exe with an additional command to point it to a config file:
e.g. "program.exe C:/Users/..../configFile.bgi"

如何实现这个功能?

我尝试了下面的方法,但没有成功:

start "C:\Users\Ben\Desktop\BGInfo\bginfo.exe C:\Users\Ben\Desktop\BGInfo\dc_bginfo.bgi"
pause

更新

我采用了Ganesh提供的解决方案,并得到了以下结果:

cd C:\Users\Ben\Desktop\BGInfo\
bginfo.exe C:\Users\Ben\Desktop\BGInfo\dc_bginfo.bgi
我已在本地机器上进行了测试(更改目录),但在服务器上(使用上级目录)它不起作用...
批处理文件夹目录: 输入图片说明 错误: 输入图片说明
3个回答

33

在批处理文件abc.bat中

cd c:\user\ben_dchost\documents\
executible.exe -flag1 -flag2 -flag3 
我假设您的executible.exe文件位于 c:\user\ben_dchost\documents\。 我还假设它所需的参数是 -flag1 -flag2 -flag3

编辑后:

对于您要执行的命令,请执行以下操作:

cd C:\Users\Ben\Desktop\BGInfo\
bginfo.exe dc_bginfo.bgi
pause

希望这能帮到您


刚在远程服务器上测试了一下,似乎不喜欢这个脚本(我正在编辑我的问题,以便您可以看到我所做的)。 - ben_dchost
如果您的路径/文件名中有空格,则必须用双引号括起来。否则,cd c:\program files\whatever 将尝试更改为不存在的 c:\program - Stephan
我尝试创建一个包含以下内容的.bat文件:<br/> cd E:\XXXX\Installers\blender\blender-3.1.0-windows-7\blender-3.1.0-windows-7\<br/> blender.exe<br/> 但它不起作用。但是,如果我手动使用文件浏览器进入文件夹,我可以打开文件。显然,这种方法在Windows 7上不起作用。但是@Mofi的方法有效。 - Harry McKenzie

7

您可以使用

start "" "%USERPROFILE%\Desktop\BGInfo\bginfo.exe" "%USERPROFILE%\Desktop\BGInfo\dc_bginfo.bgi"

或者

start "" /D "%USERPROFILE%\Desktop\BGInfo" bginfo.exe dc_bginfo.bgi

或者

"%USERPROFILE%\Desktop\BGInfo\bginfo.exe" "%USERPROFILE%\Desktop\BGInfo\dc_bginfo.bgi"

或者

cd /D "%USERPROFILE%\Desktop\BGInfo"
bginfo.exe dc_bginfo.bgi

在命令提示符窗口中执行 help startstart /?help cdcd /? 命令可获取有关 startcd 命令的帮助信息。
但我不明白为什么要使用批处理文件来使用额外参数启动应用程序。针对该应用程序在桌面上创建一个快捷方式(*.lnk), 然后右键单击该快捷方式,左键单击 属性 , 在空格字符之后附加参数"%USERPROFILE%\Desktop\BGInfo\dc_bginfo.bgi"

4

找到了另一种解决方案,这将更有帮助。

START C:\"Program Files (x86)"\Test\"Test Automation"\finger.exe ConfigFile="C:\Users\PCName\Desktop\Automation\Documents\Validation_ZoneWise_Default.finger.Config"

finger.exe是一个调用配置方案的父程序。 注意:如果您的路径包含空格,请不要忘记添加""。


是的,如在命令提示符窗口中运行cmd /?所述,"是必需的。 必须用"括起来包含空格或这些字符之一&()[]{}^=;!'+,`~<>|的文件、文件夹或任何其他参数字符串,以便将其解释为一个参数字符串,并将这些字符按字面意义解释。 但整个文件/文件夹名称必须用"括起来,而不仅仅是其中的一部分。 因此,真正正确的写法是"C:\Program Files (x86)\Test\Test Automation\finger.exe",而发布的文件名语法不正确,cmd.exe在执行start时会进行更正。 - Mofi
通过使用cmd的文件名自动完成,从cmd.exe中学习正确的语法。在命令提示符窗口中键入C:\Pro并按下__TAB__键,显示为"C:\Program Files"。再按一次__TAB__键,显示为"C:\Program Files (x86)"。再次按__TAB__键,显示为C:\ProgramData。按两次__TAB__键,在显示"C:\Program Files"后继续输入\Test\Tes,然后按下__TAB__键。显示的字符串将更改为"C:\Program Files (x86)\Test\Test Automation"。可以通过文件名自动完成功能很好地看到自动更正。 - Mofi
继续输入\fin并按下__TAB__,最终显示"C:\Program Files (x86)\Test\Test Automation\finger.exe"。 这是根据微软关于命名文件、路径和命名空间的文档指定的正确限定文件名。字符"不允许在文件/文件夹名称中出现,如微软所述。这就是为什么cmd.exe可以检测到由文件/文件夹名称字符串中的"引起的语法错误并纠正错误指定的参数字符串的原因。 - Mofi
但是,使用正确的语法将整个文件名用“”括起来后,命令__START__现在将“C:\Program Files (x86)\Test\Test Automation\finger.exe”解释为可选的控制台窗口标题,并且在__START__命令之后没有""的命令行不再工作,除非在要启动的Windows GUI可执行文件的完全限定文件名和命令__START__之间显式指定空窗口标题字符串。利用无效语法和cmd的自动语法纠正来使命令行工作是一个糟糕的概念,因为这实际上是无效语法。 - Mofi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接