【问题标题】:cmd new window store outputcmd新窗口存储输出
【发布时间】:2019-03-15 13:36:37
【问题描述】:

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

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

cmd /c start "window title" "C:\Program Files\app.exe"

通常我可以使用

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

将命令提示符上的内容保存在文件中。 由于需要在另一个窗口中执行程序,我正在努力正确设置输出。

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

--> 程序会被多次调用。我需要一个许可证,我在那里受到限制。如果程序在同一个窗口中调用,3次3次后出现错误,告诉我,我同时使用了多个许可证。

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

【问题讨论】:

  • 您的问题不清楚,您已经向我们展示了您知道如何将输出设置为文件,那么您为什么还要努力设置呢?
  • 你为什么使用命令startcmd /C 已经启动了将标准控制台输出重定向到文件所需的命令进程。命令start 又启动了一个命令进程。所以我看不出有任何理由使用命令start。带有命令%SystemRoot%\System32\cmd.exe /C window title& "%ProgramFiles%\app.exe" >"%UserProfile%\Desktop\out.txt" 的快捷方式 (*.lnk) 的作用完全相同,无需从已启动的命令进程中启动第二个命令进程。
  • 您似乎正在寻找一种解决方案来解决变通办法限制,因为使用许可应用程序的频率高于购买的许可证授予的频率。如果您需要的不仅仅是解决由于没有足够的许可证而造成的限制,您应该购买更多的许可证。
  • 恕我直言,在许可协议的限制范围内工作并没有错。试图实际规避上述许可协议的执行是有问题的。
  • @Compo :我很挣扎,因为对我来说相当新的语法和引用规则。

标签: batch-file cmd lua out


【解决方案1】:

您应该检查start /? 以了解该命令的完整语法。您需要以下元素:

  • start 命令
  • "window title"(如果您不想指定,可以是""
  • /d "working directory"
  • "command name"
  • "command arguments"

...start 之后的每个标记都被引用。示例:

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

使用start 命令的预期参数结构将输出重定向作为参数传递。传递它引用,以便 cmd 解释器知道您希望重定向 app.exe 的输出,而不是 start 命令的输出(它本身不提供任何有用的输出数据)。

【讨论】:

    【解决方案2】:

    Windows 命令行有关于引用的邪恶规则 :-)
    此代码可按您的需要工作:

    os.execute([["start "window title" cmd /C ""C:\Program Files\app.exe" > "C:\my logs\log.txt"""]])
    

    【讨论】:

    • 谢谢。您了解了问题并找到了解决方案。简短补充:如何用当前路径标记窗口。所以我需要"current path\variable" 而不是"window title"。其中variable 是 Lua 变量(字符串类型)。
    • 只连接字符串:os.execute([["start "]]..var..[[" cmd ...]])
    【解决方案3】:

    我想你正在寻找类似的东西,

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

    重定向在引号内,否则它将获取start 命令本身的输出(该输出为空)。

    【讨论】:

      猜你喜欢
      • 2020-03-04
      • 1970-01-01
      • 2019-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-30
      相关资源
      最近更新 更多