Command line CMD:将所有屏幕内容导出到文本文件

Command line CMD:将所有屏幕内容导出到文本文件,command-line,cmd,Command Line,Cmd,在命令提示符中-如何将屏幕的所有内容导出到文本文件(基本上是一个复制命令,只是不使用右键单击和剪贴板) 此命令有效,但仅适用于您执行的命令,而不适用于实际输出 doskey /HISTORY > history.txt 如果要单独查找每个命令 以文本文件形式导出命令提示符的所有输出。只需遵循以下语法即可 C:> [syntax] >file.txt 上述命令将在file.txt中创建语法结果。其中,将在您所在的当前文件夹上创建new file.txt 比如说, C:Resu

在命令提示符中-如何将屏幕的所有内容导出到文本文件(基本上是一个复制命令,只是不使用右键单击和剪贴板)

此命令有效,但仅适用于您执行的命令,而不适用于实际输出

doskey /HISTORY > history.txt

如果要单独查找每个命令

以文本文件形式导出命令提示符的所有输出。只需遵循以下语法即可

C:> [syntax] >file.txt
上述命令将在file.txt中创建语法结果。其中,将在您所在的当前文件夹上创建new 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
过滤器。有很多,有些不兼容。瑞士军刀有一个T型特点,目前仍在开发中。也许这对你有用。

请看第页

在cmd类型中:

Command | clip
然后打开一个
*.Txt
文件并
粘贴
。就这样。完成。

这个怎么样:

<command> > <filename.txt> & <filename.txt>

这将在记事本而不是命令提示符中给出结果。

如果要附加文件而不是不断创建新文件/删除旧文件的内容,请使用双
标记。单个
标记将覆盖文件的所有内容

覆盖文件

MyCommand.exe>file.txt
^这将打开file.txt(如果它已经存在)并覆盖数据,或者创建一个新文件并用输出填充它

从其端点追加文件

MyCommand.exe>>file.txt
^这将从文件的当前结尾追加file.txt(如果它已经存在),或者创建一个新文件并用输出填充它


更新#1(高级): 随着时间的推移,我的batch fu有所改进,因此这里有一些小的更新

如果要区分正确使用标准输出的程序的错误输出和正常输出,
STDOUT
/
STDERR
,只需对语法稍作修改即可。对于这些示例,我将只使用
进行覆盖,但是对于文件管道输出重定向,它们与
>
进行追加时效果非常好

>
之前的
1
是标准输出的标志。如果您需要在重定向符号之前实际输出数字1或2,如果您不了解此机制,则可能会导致奇怪的、非直观的错误。这在将单个结果编号输出到文件中时尤其重要<代码>2在重定向符号用于STDERR之前

现在您知道有多个流可用,现在是展示输出到
nul
的好处的好时机。现在,输出到
nul
在概念上与输出到文件的方式相同。您在控制台中看不到内容。它不是进入文件或控制台输出,而是进入空白

STDERR以归档和抑制标准输出

MyCommand.exe 1>nul 2>errors.txt

STDERR到文件,仅记录错误。将使标准输出保持在控制台中

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文件

更新#2 我开始注意到在编写直接写入
STDERR
的控制台应用程序时出现的奇怪行为,并意识到如果我想在使用基本管道时将错误输出转到同一个文件,我要么必须组合流
1
2
,要么只使用
STDOUT
。该问题的问题是,我不知道组合流的正确方法,即:

%command%>输出文件2>&1

因此,如果希望所有STDOUTSTDERR通过管道传输到同一个流中,请确保这样使用:

MyCommand.exe>file.txt 2>&1

重定向器实际上默认为
1>
1>
,即使您没有在它前面明确使用
1
,如果您没有在它前面使用数字,
2>&1
组合流

更新#3(简单) 一切为空 如果要完全抑制STDOUT和STDERR,可以这样做。作为警告,并非所有的文本管道都使用标准输出和标准输出,但它适用于绝大多数用例

STD*为空
MyCommand.exe>num2>&1

复制CMD或Powershell会话的命令输出
如果您只需要刚刚完成的CMD或Powershell会话的命令输出,或者任何其他shell的命令输出,那么您通常可以从该会话中选择该控制台,CTRL+a选择所有内容,然后CTRL+C复制内容。然后,当复制的内容在剪贴板中时,您可以对其执行任何您喜欢的操作

从命令提示符以管理员身份运行。下面的示例是打印PC上运行的服务列表,请运行以下命令:

net start > c:\netstart.txt

您应该看到刚刚导出的文本文件的副本,其中列出了在
C:\
驱动器根目录下运行的所有PC服务。

如果您想输出all详细信息,而不仅仅是标准输出。但是,对于程序生成的任何printf语句、任何警告、信息等,您必须在命令行末尾添加
2>&1

在你的c
net start > c:\netstart.txt