在命令提示符中 - 如何将屏幕的所有内容导出到文本文件(基本上是复制命令,而不是使用右键单击和剪贴板)
此命令有效,但仅适用于您执行的命令,而不是实际输出以及
doskey /HISTORY > history.txt
答案 0 :(得分:21)
如果您想要附加文件而不是不断创建新文件/删除旧文件,请使用双>
标记。单个>
标记将覆盖所有文件的内容。
覆盖文件
MyCommand.exe>file.txt
^这将打开file.txt(如果它已经存在)并覆盖数据,或者创建一个新文件并用输出填充
从其终点附加文件
MyCommand.exe>>file.txt
^如果file.txt已经存在,它会从文件的当前末尾追加它,或者创建一个新文件并用输出填充它。
我的批次fu随着时间的推移有所改善,所以这里有一些小的更新。
如果要区分正确使用Standard streams,STDOUT
/ STDERR
的程序的错误输出和正常输出,可以通过对语法进行细微更改来执行此操作。我将只使用>
来覆盖这些示例,但是对于文件管道输出重定向,它们可以与>>
完全正常地进行追加。
1
或>>
之前的>
是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}}和1
或只使用2
。这个问题的问题是我不知道组合流的正确方法,this:
STDOUT
因此,如果您希望将所有 STDOUT 和 STDERR 管道传输到同一个流中,请务必使用它:
%command% > outputfile 2>&1
重定向器实际上默认为MyCommand.exe > file.txt 2>&1
或1>
,即使您没有在其前面使用数字,也不要在其前面明确使用1>>
,并且1
组合了流。
如果您想要的只是您刚刚完成的CMD或Powershell会话的命令输出,或者任何其他shell,您通常只需从该会话中选择该控制台, CTRL + A 选择所有内容,然后 CTRL + C 复制内容。然后,您可以使用复制的内容对剪贴板进行任何操作。
答案 1 :(得分:18)
答案 2 :(得分:10)
如果您要单独查找每个命令
导出文本文件中命令提示符的所有输出。只需遵循以下语法即可。
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.
答案 3 :(得分:3)
如果您的批处理文件不是交互式的,并且您不需要查看它,那么这应该可以。
@echo off
call file.bat >textfile.txt 2>&1
否则使用tee
过滤器。有很多,有些不兼容NT。 SFK瑞士军刀具有T恤功能,目前仍在开发中。也许这对你有用。
答案 4 :(得分:1)
这个怎么样:
<command> > <filename.txt> & <filename.txt>
示例:
ipconfig /all > network.txt & network.txt
这将在记事本而不是命令提示符中显示结果。
答案 5 :(得分:0)
从命令提示符以管理员身份运行。下面的示例是打印PC上运行的服务列表,运行以下命令:
net start > c:\netstart.txt
您应该会看到刚刚导出的文本文件的副本,其中列出了C:\
驱动器根目录下运行的所有PC服务。
答案 6 :(得分:0)
如果您要输出 ALL 详细信息,而不仅仅是 stdout 。但是该程序发出的所有 printf 语句,任何警告,信息等,都必须在命令行末尾添加2>&1
。
在您的情况下,命令将为
Program.exe > file.txt 2>&1