cmd新窗口存储输出

我想要打开一个新的命令提示符窗口,运行一个程序并将输出(当前在命令提示符中显示)保存在日志文件中。

到目前为止,我使用了这个命令:

cmd /c start "窗口标题" "C:\Program Files\app.exe"

通常我可以使用

"C:\Program Files\app.exe" >out.txt

来将命令提示符中的内容保存在一个文件中。 由于需要在另一个窗口中执行程序,我在正确设置输出方面遇到了困难。

为什么需要额外的窗口呢?

-->该程序将被多次调用。我需要许可证,而且我在这方面受到了限制。如果该程序在同一个窗口中被调用,在第三次之后就会出现错误,告诉我同时使用了太多许可证。

通过额外打开和关闭窗口,这个“许可证问题”得到了解决。 但对于输出,我找不到解决方案。 由于这个命令嵌入在Lua的'os.execute()'中,因此标记为Lua。

点赞
用户463115
用户463115

我想你可能在寻找这样的东西:

start "窗口标题" "C:\Program Files\app.exe > out.txt"

这个重定向语句在引号中间,否则它会获取 start 命令本身的输出(该输出为空)。

2019-03-15 14:12:33
用户6834680
用户6834680

Windows 命令行对引号有非常棘手的规则 :-)

以下代码可按您需求工作:

os.execute([["start "window title" cmd /C ""C:\Program Files\app.exe" > "C:\my logs\log.txt"""]])
2019-03-15 15:26:51
用户1683264
用户1683264

你应该查看 start /? 命令的完整语法。你需要以下元素:

  • start 命令
  • "窗口标题"(如果你不想指定,可以为空)
  • /d "工作目录"
  • "命令名称"
  • "命令参数"

... 每个在 start 之后的标记都需要加引号。例如:

start "" /d "C:\Program Files\appdir" "app.exe" ">%userprofile%\Desktop\out.txt"

使用 start 命令期望的参数结构将输出重定向作为参数传递。将它加引号,这样 cmd 解释器就知道你想要 app.exe 的输出被重定向,而不是 start 命令的输出(它本身并没有提供任何有用的输出数据)。

2019-03-15 17:42:24