在批处理文件中使用参数运行exe文件

25
请查看我的批处理文件。
echo off
start "c:\program files\php\php.exe D:\mydocs\mp\index.php param1 param2"

但它没起作用。你有什么想法如何让它工作?

3个回答

41

这应该可以正常工作:

start "" "c:\program files\php\php.exe" D:\mydocs\mp\index.php param1 param2

start 命令会将第一个参数解释为窗口标题,如果其包含空格。在这种情况下,这意味着 start 将整个参数视为标题并且没有命令被执行。将 ""(空标题)作为第一个参数传递给 start 可以解决这个问题。


好的,太棒了。我刚试了一下,似乎可以工作。有没有办法捕获输出或错误?谢谢。 - user1421214
它似乎只是在命令面板上快速闪烁...我能让它保持打开状态,这样我就可以看到输出吗? - user1421214
暂停并不会保持窗口打开,它只是告诉我在那个窗口关闭后按任意键继续。 - user1421214
是的,我忘了你正在使用“start”打开第二个窗口。 - Álvaro González
你真的需要 start 吗? - Álvaro González
多亏这个,我终于让它工作了。我在这里分享我的示例:start "" "c:\programmi\microsoft office\office14\outlook.exe" /safe - 我把它放到了自动启动中,这样我的 outllok 就可以在安全模式下启动了,因为它有一些问题。 - UnDiUdin

11
如果您需要查看执行的输出,请使用CALL与或代替START一起使用。
例如: CALL "C:\Program Files\Certain Directory\file.exe" -param PAUSE 这将运行file.exe并在同一个命令窗口中返回任何输出。记得在调用之后使用PAUSE,否则窗口可能会立即关闭。

0

除非这只是一个问题的简化示例,否则我的建议是放弃批处理包装器并直接安排PHP,更具体地说是php-win.exe程序,它不会打开不必要的窗口。

Program: c:\program files\php\php-win.exe
Arguments: D:\mydocs\mp\index.php param1 param2

否则,就像安德鲁指出的那样,引用一些东西。
在旧版的Windows中,只要将所有内容放入单个“运行”文本框中(只要引用所有具有空格的内容),就应该可以了。
"c:\program files\php\php-win.exe" D:\mydocs\mp\index.php param1 param2

实际上,我尝试创建一个计划任务,但是在Last Run列中一直收到错误0x1,但是如果我手动在Cmd提示符中运行相同的命令,则可以运行!这就是为什么我认为它可能会在批处理文件中工作? - user1421214
另外,以上是我的批处理文件中确切的代码行(仅添加了虚拟参数param1和param2)。 - user1421214
这不是一个脚本。那些是你必须在任务计划程序界面中填写的字段。 - Álvaro González

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