在命令提示符中-如何将屏幕的所有内容导出到文本文件(基本上是复制命令,而不是使用右键单击和剪贴板)
此命令有效,但仅适用于您执行的命令,不适用于实际输出
doskey /HISTORY > history.txt
在命令提示符中-如何将屏幕的所有内容导出到文本文件(基本上是复制命令,而不是使用右键单击和剪贴板)
此命令有效,但仅适用于您执行的命令,不适用于实际输出
doskey /HISTORY > history.txt
如果您想追加文件而不是不断地制作新文件/删除旧文件的内容,请使用双>
标记。单个>
标记将覆盖所有文件的内容。
覆盖文件
MyCommand.exe>file.txt
^这将打开 file.txt 如果它已经存在并覆盖数据,或者创建一个新文件并用你的输出填充它
从端点追加文件
MyCommand.exe>>file.txt
^这将从文件的当前末尾追加 file.txt 如果它已经存在,或者创建一个新文件并用您的输出填充它。
随着时间的推移,我的批处理功能有所改进,所以这里有一些小的更新。
如果您想区分正确使用标准流STDOUT
/的程序的错误输出和正常输出,STDERR
您可以通过对语法稍作更改来做到这一点。对于这些示例,我将仅用于覆盖,但在文件管道输出重定向方面,它们与 for append>
一起工作得很好。>>
在or1
之前是 STDOUT 的标志。如果您需要在重定向符号之前实际输出数字一或二,如果您不了解此机制,这可能会导致奇怪的、不直观的错误。在将单个结果编号输出到文件中时,这一点尤其重要。在重定向符号用于 STDERR 之前。>>
>
2
既然您知道您有多个可用的流,现在是展示输出到nul
. 现在,输出到nul
在概念上与输出到文件的工作方式相同。您看不到控制台中的内容。它没有进入文件或控制台输出,而是进入了空白。
STDERR归档并抑制STDOUT
MyCommand.exe 1>nul 2>errors.txt
将STDERR归档以仅记录错误。将 STDOUT 保留在控制台中
MyCommand.exe 2>errors.txt
STDOUT归档并抑制STDERR
MyCommand.exe 1>file.txt 2>nul
STDOUT 仅用于归档。将 STDERR 保留在控制台中
MyCommand.exe 1>file.txt
STDOUT到一个文件, STDERR到另一个文件
MyCommand.exe 1>stdout.txt 2>errors.txt
我在这里唯一需要注意的是,如果其中一个流从未被使用过,它可以为未使用的流创建一个 0 字节的文件。基本上,如果没有发生错误,您最终可能会得到一个 0 字节的 errors.txt 文件。
在编写直接STDERR
写入. 该问题的问题是我不知道合并流的正确方法,即:1
2
STDOUT
%command% > outputfile 2>&1
因此,如果您希望所有STDOUT 和 STDERR都通过管道传输到同一个流中,请确保像这样使用它:
MyCommand.exe > file.txt 2>&1
重定向器实际上默认为1>
or 1>>
,即使您没有1
在它前面显式使用,如果您在它前面不使用数字,并且2>&1
组合流。
如果你想完全抑制 STDOUT 和 STDERR,你可以这样做。作为警告,并非所有文本管道都使用 STDOUT 和 STDERR,但它适用于绝大多数用例。
STD* 为空
MyCommand.exe>nul 2>&1
如果您想要的只是刚刚完成的 CMD 或 Powershell 会话的命令输出,或者任何其他 shell,您通常可以从该会话中选择该控制台,CTRL+A选择所有内容,然后CTRL+C复制内容. 然后,您可以对剪贴板中的复制内容执行任何您喜欢的操作。
如果您要分别查找每个命令
将命令提示符的所有输出导出到文本文件中。只需遵循以下语法。
C:> [syntax] >file.txt
上述命令将在 file.txt 中创建语法结果。将在您所在的当前文件夹上创建新的 file.txt。
例如,
C:Result> dir >file.txt
要复制整个会话,试试这个:
Copy & Paste a command session as follows:
1.) At the end of your session, click the upper left corner to display the menu.
Then select.. Edit -> Select all
2.) Again, click the upper left corner to display the menu.
Then select.. Edit -> Copy
3.) Open your favorite text editor and use Ctrl+V or your normal
Paste operation to paste in the text.
如果您的批处理文件不是交互式的并且您不需要看到它运行,那么这应该可以工作。
@echo off
call file.bat >textfile.txt 2>&1
否则使用tee
过滤器。有很多,有些与 NT 不兼容。SFK 瑞士军刀具有 tee 功能,并且仍在开发中。也许这对你有用。
这个怎么样:
<command> > <filename.txt> & <filename.txt>
例子:
ipconfig /all > network.txt & network.txt
这将在记事本而不是命令提示符中给出结果。
从命令提示符以管理员身份运行。下面的示例是打印在您的 PC 上运行的服务列表,运行以下命令:
net start > c:\netstart.txt
您应该会看到刚刚导出的文本文件的副本,其中列出了在C:\
驱动器根目录中运行的所有 PC 服务。
如果您想输出所有详细信息,而不仅仅是stdout。但是程序发出的任何printf语句、任何警告、信息等,您都必须2>&1
在命令行末尾添加。
在您的情况下,命令将是
Program.exe > file.txt 2>&1