【问题标题】:how redirect output of a *.cmd file that contains start command to a file?如何将包含启动命令的 *.cmd 文件的输出重定向到文件?
【发布时间】:2012-04-26 14:28:58
【问题描述】:

如果我把这个命令放在控制台上:

start /b /belownormal /wait php.exe script.php > output.txt

一切顺利,但如果我输入相同的命令但没有重定向到 *.cmd 文件,然后对该文件进行重定向:

所以文件myscript.cmd如下:

start /b /belownormal /wait php.exe script.php

我有问题的命令是:

myscript.cmd > output.txt

正在创建 output.txt 但为空。 有没有其他方法可以运行具有“低于正常”优先级的任何命令行应用程序并能够将输出重定向到文件?

(当然这和php没有什么特别的关系。任何命令都有这个效果,即使是简单的回显。)

【问题讨论】:

  • 也许你可以做到这一点:(在 1.bat 中)启动 /b /belownormal /wait 2.bat(在 2.bat 中)php.exe script.php > output.txt
  • 在 Win7 64bit 上我无法重现上述行为
  • 其次(Win7 SP1 64 位)。这些是我尝试重现该问题所采取的步骤:1)echo @start /b /belownormal /wait cmd /c echo NOT every command has this effect> test.bat; 2)test.bat > testdir; 3)type testdir。猜猜最后一个命令的输出是什么?

标签: command-line batch-file windows-xp


【解决方案1】:

也许这个技巧可以解决你的问题。 myscript.cmd:

start /b /belownormal /wait php.exe script.php %~1

这样称呼它:

myscript.cmd "> output.txt"

【讨论】:

  • 但是在这种情况下重定向不会应用于start 命令吗?
  • 是的,完全符合 OP 的要求! :)
  • 确实如此。起初我以为他们希望将输出应用于php.exe(和 PHP 脚本),但现在我可以看到他们的示例中没有任何暗示。
  • 但是...如果他们希望start 的输出被重定向,那么应用于 cmd 脚本的 normal 重定向应该做同样的事情,不是吗?我的意思是,如果您重定向批处理脚本的输出,则重定向将应用于脚本中每个命令的输出,因此myscript.cmd > output.txt 也应该适用于start(没有任何技巧)。
  • 是的,我一开始也是这么想的,但似乎通过批处理文件启动的进程不会继承标准句柄,而是 recreate 它们。否则,您可以在记事本中启动文件的自动编辑,例如,通过以下方式重定向此类编辑的键盘输入命令:start /b anyfile.txt < editCommands.txt
【解决方案2】:

尝试使用插入符号^ 转义重定向,即

myscript.cmd ^> output.txt

【讨论】:

    猜你喜欢
    • 2016-09-09
    • 2021-09-09
    • 2022-01-24
    • 1970-01-01
    • 2018-06-07
    • 2013-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多