コマンドプロンプト-画面のすべてのコンテンツをテキストファイルにエクスポートするにはどうすればよいですか(基本的には、右クリックやクリップボードを使用するのではなく、コピーコマンドです)
このコマンドは機能しますが、実際の出力ではなく、実行したコマンドに対してのみas
doskey /HISTORY > history.txt
常に新しいファイルを作成する/古いコンテンツを削除するのではなく、ファイルを追加する場合は、>
マークを二重に使用します。単一の>
マークは、すべてのファイルのコンテンツを上書きします。
上書きファイル
MyCommand.exe>file.txt
^これは、file.txtが既に存在する場合にそれを開き、データを上書きするか、新しいファイルを作成して出力で埋めます。
エンドポイントからの追加ファイル
MyCommand.exe>>file.txt
^これにより、file.txtが現在のファイルの末尾にすでに存在する場合は追加されます。または、新しいファイルを作成して出力で埋めます。
私のbatch-fuは時間の経過とともに改善されているため、ここにいくつかのマイナーアップデートがあります。
標準ストリーム 、STDOUT
/STDERR
を正しく使用するプログラムのエラー出力と通常出力を区別したい場合、構文を少し変更することでこれを行うことができます。これらの例の上書きには>
を使用しますが、ファイルパイピング出力のリダイレクトに関しては、>>
を追加に使用すると問題なく動作します。
1
または>>
の前の>
は、STDOUTのフラグです。リダイレクトシンボルの前に1または2の数字を実際に出力する必要がある場合、このメカニズムを知らないと、奇妙で直感的でないエラーが発生する可能性があります。これは、単一の結果番号をファイルに出力するときに特に関連します。 2
リダイレクト記号の前はSTDERR用です。
複数のストリームが利用可能であることがわかったので、nul
に出力することの利点を示す良い機会です。現在、nul
への出力は、概念的にファイルへの出力と同じように機能します。コンソールにコンテンツが表示されません。ファイルまたはコンソール出力に行く代わりに、それは無効になります。
STDERRto fileおよびsuppressSTDOUT
MyCommand.exe 1>nul 2>errors.txt
STDERRエラーをログに記録するだけです。コンソールにSTDOUTを保持します
MyCommand.exe 2>errors.txt
STDOUTto fileおよびsuppressSTDERR
MyCommand.exe 1>file.txt 2>nul
STDOUTonlyto file。コンソールにSTDERRを保持します
MyCommand.exe 1>file.txt
STDOUT1つのファイルにandSTDERRanotherファイル
MyCommand.exe 1>stdout.txt 2>errors.txt
ここで唯一の注意点は、ストリームの1つが使用されない場合、未使用のストリームに対して0バイトのファイルを作成できることです。基本的に、エラーが発生しなかった場合、0バイトのerrors.txtファイルで終わる可能性があります。
STDERR
に直接書き込むコンソールアプリを作成するときに奇妙な動作に気付き始め、基本的なパイピングを使用しているときにエラー出力を同じファイルに送りたい場合、ストリーム1
および2
または単にSTDOUT
を使用します。その問題の問題は、ストリームを結合する正しい方法がわからなかったことです。これは this です。
%command% > outputfile 2>&1
したがって、すべてSTDOUTandが必要な場合STDERRは同じストリームにパイプされます。必ず次のように使用してください。
MyCommand.exe > file.txt 2>&1
リダイレクタは、実際にはデフォルトで1>
または1>>
になります。たとえその前に1
を明示的に使用していなくても、その前に数字を使用しなければ2>&1
はストリームを結合します。
必要なのが、完了したCMDまたはPowershellセッションからのコマンド出力、またはその問題の他のシェルだけである場合、通常はそのセッションからそのコンソールを選択するだけで、 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互換ではないものが多数あります。 SFアーミーナイフにはティー機能があり、まだ開発中です。たぶんそれはあなたのために働くでしょう。
これはどう:
<command> > <filename.txt> & <filename.txt>
例:
ipconfig /all > network.txt & network.txt
これにより、コマンドプロンプトの代わりにメモ帳に結果が表示されます。
コマンドプロンプトから管理者として実行。以下の例は、PCで実行されているサービスのリストを印刷して、次のコマンドを実行することです。
net start > c:\netstart.txt
エクスポートしたテキストファイルのコピーが、C:\
ドライブのルートで実行されているすべてのPCサービスのリストとともに表示されます。
stdoutだけでなく、ALL冗長性を出力する場合。ただし、プログラムによって作成されたprintfステートメント、警告、情報なども、コマンドの最後に2>&1
を追加する必要があります。ライン。
あなたの場合、コマンドは
Program.exe > file.txt 2>&1