Windowsのコマンドプロンプトでコマンドを使い操作すると、画面に結果が出ます。(これを標準出力という)
標準出力された結果をデータで残す(ファイルで残す)ことを考えた時あなたならどうしますか?
画面をキャプチャ(ハードコピー)しますか?
1画面に表示されない場合は何回もコピーする必要がありますし、結果をデータ化できずに使いにくいですよね。
コピー&ペーストしますか?
これは確実そうですが、保存する結果対象行数が何千行もあったら時間もかかりますし、手間も多いですよね。
予め組み込んだバッチ処理で結果を確認するにはどうしますか?
別のモジュールやアプリケーションを使ってログを出力するのも良いですが、実行する環境に左右されてしまう可能性がありますし、場合によってはアプリケーションの追加の費用が発生してしまい、経営的にあまり嬉しくないかもしれません。
これら方法だと時には良いかもしれませんが、手っ取り早く確実に、しかもWindowsの標準機能でファイルに出力する方法があるのでご紹介します!
とても簡単ですし、誰でも使えて今後も重宝する方法を是非覚えましょう!
コマンドプロンプトやバッチの出力結果をファイル出力するシーンは?
コマンドプロンプトやバッチで実行した結果をファイルに出力するシーンってどんな時があるでしょうか。
- (今は日中で)夜中に◎◎の処理を実行した結果をログに出力しておきたい
- 出力結果が1万行を超えるので画面に表示しきれないからテキストファイルに出力したい
- 実行結果をログファイルに出力して、メールに添付して送付したい
- リモート接続先のコンソール(画面)が使えないのでログファイルに結果を出力したい
などなど、他にも沢山あるでしょう。
実行した結果をその場で目視確認出来るならファイル出力は不要かもしれませんが、記録を残すという点でファイル出力するシーンが圧倒的に多いと思います。
記録(ファイル出力)しておけば、後でいくらでも振り返って調査や検証が出来ますよね。
コマンドプロンプト上に出てる結果は画面(cmd.exe)起動中は表示され残っておりますが、画面を(cmd.exe)を終了させると消えてしまいますから、誰かが間違って画面を閉じてしまったら記録が消えてしまうことになりかねません。
記録する、という観点からファイル出力は非常に有効な手段なのです。
コマンドプロンプトやバッチの結果をファイル出力する方法
では、いよいよ本題です。
コマンドプロンプトやバッチの結果をファイル出力する方法を説明します。
あまりにも簡単すぎてびっくりしますよ!
前提条件
今回のコマンドが使える条件としては
- 実行するアプリケーション・モジュール(Exeなど)がリターン値を返すようになってること
です。
リターン値を返さずに実行されるアプリケーションだった場合は以下コマンドを使っても結果を得ることが出来ないのでご注意下さい。(今時そんなアプリケーションやモジュールがあるとは思えないですが。)
実行結果出力構文(ファイル上書きモード)
(実行ファイルのパス) > (結果出力先ファイルパス(フルパスでも相対パスでもOK)
コマンドプロンプト(あるいはバッチファイル内)に上記構文で打ち込みます。
「>」がポイントです。
後述しますが、「>>」もファイルに出力する動きとなりますが意味が異なりますのでご注意を。
「>」を使ってファイル出力すると、書き込み先のファイルは上書きモードとなり、既にファイルが存在していた場合は内容が上書きされます。
ファイルが存在しない場合は新規に作成し、書き込みされます。
以下はコマンドプロンプトの「help」コマンドの実行結果を「C:\temp\kekka.txt」に出力する例となります。(事前にCドライブの直下にtempフォルダがあることを確認して下さい。Windowsで使用しているフォルダなのであるはずですが念のため)
help > C:\temp\kekka.txt
試しにコマンドプロンプト(cmd.exe)を起動して、打ち込んで、C:\temp\kekka.txtのファイルをメモ帳などで開いてみて下さい。
特定のコマンドの詳細情報は、"HELP コマンド名" を入力してください ASSOC ファイル拡張子の関連付けを表示または変更します。 ATTRIB ファイルの属性を表示または変更します。 BREAK 拡張 CTRL+C チェックを設定または解除します。 BCDEDIT ブート データベースのプロパティを設定して起動時の読み込みを制御します。 CACLS ファイルのアクセス制御リスト (ACL) を表示または変更します。 CALL バッチ プログラム中から、別のバッチ プログラムを呼び出します。 CD 現在のディレクトリを表示または変更します。 CHCP 有効なコード ページ番号を表示または設定します。 ~~~中略~~~~ TIME システム時刻を表示または変更します。 TITLE コマンド プロンプト ウィンドウのタイトルを設定します。 TREE ドライブまたはパスのディレクトリ構造を図式表示します。 TYPE テキスト ファイルの内容を表示します。 VER Windows のバージョンを表示します。 VERIFY ファイルがディスクへ正しく書き込まれたかを照合するかどうか Windows へ指定します。 VOL ディスクのボリューム ラベルとシリアル番号を表示します。 XCOPY ファイルやディレクトリ構造をコピーします。 WMIC 会話型コマンド シェルの WMI 情報を表示します。 ツールの詳細な情報については、オンライン ヘルプのコマンド ライン リファレンスを参照してください。
kekka.txt内は上記のように出力されているはずです。
これをコマンドプロンプトに表示された結果をコピー&ペースト(貼り付け)でテキストファイルに書いていたのでは作業量も多くて大変ではないですか?
出力するこのコマンドを使えば、100%確実に間違いなくファイルに出力されますから、使わない手はないですよね。
※実際に上記コマンドを使って検証してる方は、以下のファイル追記モードでC:\temp\kekka.txtのファイルを使うので消さないでおいてください!
実行結果出力構文(ファイル追記モード)
(実行ファイルのパス) >> (結果出力先ファイルパス(フルパスでも相対パスでもOK)
コマンドプロンプト(あるいはバッチファイル内)に上記構文で打ち込みます。
「>>」がポイントです。
上書きモードと異なり、「>」が1つ増えます。
「>>」を使ってファイル出力すると、書き込み先のファイルは追記モードとなり、既にファイルが存在していた場合は内容が最後に追記されます。
ファイルが存在しない場合は新規に作成し、書き込みされます。
出力先のファイルを消したくない場合などは追記モードで出力しましょう。
以下はコマンドプロンプトの「ver」コマンド(Windowsのバージョンを確認する)の実行結果を先ほど出力した「C:\temp\kekka.txt」に追記で出力する例となります。
ver >> C:\temp\kekka.txt
このコマンドを実行し、C:\temp\kekka.txtを開いて確認すると以下内容になってるはずです。
特定のコマンドの詳細情報は、"HELP コマンド名" を入力してください ASSOC ファイル拡張子の関連付けを表示または変更します。 ~~~中略~~~~ WMIC 会話型コマンド シェルの WMI 情報を表示します。 ツールの詳細な情報については、オンライン ヘルプのコマンド ライン リファレンスを参照してください。 Microsoft Windows [Version 6.3.9600]
先ほどのhelpコマンドの結果にWindowsのバージョン結果が出力されていますよね。
実行結果をファイル出力して業務を円滑に!
以上が実行結果をファイル出力する「>」や「>>」の説明でした。
色んなシーンで使えますので覚えておきましょう。