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
因此,如果希望所有STDOUT和STDERR通过管道传输到同一个流中,请确保这样使用:
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