CMD: 画面上のすべての内容をテキストファイルにエクスポートする 質問する

CMD: 画面上のすべての内容をテキストファイルにエクスポートする 質問する

コマンド プロンプトで、画面のすべてのコンテンツをテキスト ファイルにエクスポートするにはどうすればよいですか (基本的にはコピー コマンドですが、右クリックとクリップボードは使用しません)

このコマンドは機能しますが、実行したコマンドに対してのみ機能し、実際の出力に対しては機能しません。同じように

doskey /HISTORY > history.txt

ベストアンサー1

常に新しいファイルを作成したり古いファイルの内容を削除したりするのではなく、ファイルを追加したい場合は、二重>マークを使用します。単一の>マークでは、ファイルのすべての内容が上書きされます。

上書きファイル

MyCommand.exe>file.txt

^すでに存在する場合はfile.txtを開いてデータを上書きするか、新しいファイルを作成して出力を入力します。

追加ファイルのエンドポイントから

MyCommand.exe>>file.txt

^これにより、file.txt が既に存在する場合は現在のファイルの末尾から追加され、そうでない場合は新しいファイルが作成され、出力で埋められます。


アップデート#1(上級):

私のバッチ機能は時間とともに向上してきたので、ここでいくつかのマイナーアップデートを紹介します。

正しく使用しているプログラムのエラー出力と通常出力を区別したい場合は、標準ストリームSTDOUT/ STDERR、構文を少し変更するだけでこれを行うことができます。>これらの例では上書きにのみ使用しますが、>>ファイルパイプ出力のリダイレクトに関しては追加でも完全に正常に機能します。

またはの1前の はSTDOUT のフラグです。リダイレクト シンボルの 1 つまたは 2 つ前に実際に数値を出力する必要がある場合、このメカニズムについて知らないと奇妙で直感に反するエラーが発生する可能性があります。これは、単一の結果数値をファイルに出力する場合に特に関係します。リダイレクト シンボルの前の は STDERR 用です。>>>2

複数のストリームを利用できることがわかったので、 に出力することの利点を示すのに良いタイミングですnul。 に出力することは、nul概念的にはファイルへの出力と同じように機能します。コンソールにコンテンツは表示されません。コンテンツはファイルやコンソール出力に送られるのではなく、void に出力されます。

標準エラー出力ファイルして抑制する標準出力

MyCommand.exe 1>nul 2>errors.txt

標準エラー出力エラーのみを記録するファイル。コンソールのSTDOUTは保持されます

MyCommand.exe 2>errors.txt

標準出力ファイルして抑制する標準エラー出力

MyCommand.exe 1>file.txt 2>nul

標準出力 のみファイルに書き込む。コンソールにSTDERRを保存する

MyCommand.exe 1>file.txt

標準出力1つのファイルにそして 標準エラー出力別のファイル

MyCommand.exe 1>stdout.txt 2>errors.txt

ここでの唯一の注意点は、ストリームの 1 つがまったく使用されなかった場合、未使用のストリームに対して 0 バイトのファイルが作成される可能性があることです。基本的に、エラーが発生しなかった場合は、0 バイトの errors.txt ファイルが作成されることになります。

アップデート#2

に直接書き込むコンソールアプリを書いているときに奇妙な動作に気づき始めました。STDERR基本的なパイプを使用しているときにエラー出力を同じファイルに出力したい場合は、ストリーム1とを組み合わせる2か、単に を使用する必要があることSTDOUTに気付きました。この問題の問題は、ストリームを組み合わせる正しい方法を知らなかったことです。これ:

%command% > outputfile 2>&1

したがって、すべてを望むなら標準出力 そして 標準エラー出力同じストリームにパイプする場合は、次のように使用してください。

MyCommand.exe > file.txt 2>&1

リダイレクタは、その前に数字を使用しない場合は、その前に を明示的に使用しない場合でも、実際にはデフォルトで1>またはになり、 はストリームを結合します。1>>12>&1

アップデート #3 (シンプル)

すべてにNull

STDOUT と STDERR を完全に抑制したい場合は、この方法を使用できます。警告として、すべてのテキスト パイプが STDOUT と STDERR を使用するわけではありませんが、ほとんどのユース ケースで機能します。

STD* を null にするMyCommand.exe>nul 2>&1

CMDまたはPowershellセッションのコマンド出力をコピーする

終了したばかりの CMD または Powershell セッション、あるいはその他のシェルからのコマンド出力だけが必要な場合は、通常、そのセッションからそのコンソールを選択し、CTRL+Aですべてのコンテンツを選択してから、CTRL+Cでコンテンツをコピーします。その後、コピーしたコンテンツがクリップボードにある間は、好きなように操作できます。

おすすめ記事