我想打开一个新的命令提示符,运行一个程序并将输出(现在显示在命令提示符中)保存在日志文件中。
到目前为止我使用了这个命令:
cmd /c start "window title" "C:\Program Files\app.exe"
通常我都可以使用
"C:\Program Files\app.exe" >out.txt
保存文件中命令提示符上的内容。由于需要,程序在另一个窗口中执行,我正在努力正确设置输出。
为什么我需要额外的窗口?
- >程序将被多次调用。我需要一个许可证,我在那里有限。如果在同一个窗口中调用该程序,则在发生错误3次之后发生错误,告诉我,我同时使用了许多许可证。
通过额外的打开和关闭窗口,这个“许可证问题”得以解决。但是我找不到输出的解决方案。 Lua被标记,因为这个命令嵌入在Lua的os.execute()
中
Windows命令行有关于引用的邪恶规则:-) 此代码可根据需要使用:
os.execute([["start "window title" cmd /C ""C:\Program Files\app.exe" > "C:\my logs\log.txt"""]])
您应该检查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
命令的输出(它本身不提供任何有用的输出数据)。
我想你正在寻找类似的东西,
start "window title" "C:\Program Files\app.exe > out.txt"
重定向在引号内,否则它将获取start
命令本身的输出(该输出为空)。