コマンドプロンプトの出力を、ファイルに保存する
ちと作業をしていて少し煮詰まってきたので、気分転換に。(わはは
ちょっと前に、作業の過程をログに取りましょう。なんてトピックを読んだ事がありました。
- コアテクの路地: 作業ログの取り方
http://blog.miraclelinux.com/ctd/2006/08/post_a6c8.html - 充実した研究室生活のための 100 のヒント
http://www.ispl.jp/~oosaki/research/100-tips-lab/
確かになぁ と思ったのですが、上の動作環境って、Linuxな世界を想定しているんですよね。
じゃぁ、「Windowsな世界は どーすりゃいいの?」と思った訳です。
コマンドプロンプトのバッファサイズを無茶苦茶多くするって力技も考えられるんですが、スマートじゃないですしねぇ。
この間から そういった要件を思い出しては、ぐーぐる様に検索キーワードをとっかえひっかえしつつ、お伺いを立てていた訳です。
で、まぁ、ある程度 Windowsで、作業ログを取る方法について、見込みが立ってきたので、紹介をば。
1.DOS process LOG writer(doslog)を使う
PHOENIXさんが作られたアプリケーションです。
- DOS process LOG writer(Windows95/98/Me / ユーティリティ)
http://www.vector.co.jp/soft/dl/win95/util/se144974.html
使い方例を、以下に示します。
$ set LOG_FILE=/OUT log.txt $ doslog cmd 実行しています... > cmd Microsoft Windows XP [Version 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp. $ dir /w ドライブ F のボリューム ラベルは ボリューム です ボリューム シリアル番号は C8D2-1C4A です xxx のディレクトリ [.] [..] Doslog.exe doslog.txt log.txt 3 個のファイル 65,398 バイト 2 個のディレクトリ 50,034,937,856 バイトの空き領域 $ exit 所要時間 = 14 秒 031 終了コード=0 log.txt に子プロセスが吐き出した出力が保存されています
ちなみに、log.txtは、こんな風になっています。
Microsoft Windows XP [Version 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp. $ ドライブ F のボリューム ラベルは ボリューム です ボリューム シリアル番号は C8D2-1C4A です xxx のディレクトリ [.] [..] Doslog.exe doslog.txt log.txt 3 個のファイル 65,398 バイト 2 個のディレクトリ 50,034,937,856 バイトの空き領域 $
2.Tee.vbsを使う
吉岡さんという方の作られた、Tee.vbsを使います。VBScriptで作られています。
- Tee.VBS(Windows95/98/Me / ユーティリティ)
http://www.vector.co.jp/soft/win95/util/se319986.html?g
使い方を、以下に示します。
$ cmd 2>&1 | cscript tee.vbs log.txt Microsoft (R) Windows Script Host Version 5.6 Copyright (C) Microsoft Corporation 1996-2001. All rights reserved. Microsoft Windows XP [Version 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp. $ dir ドライブ F のボリューム ラベルは ボリューム です ボリューム シリアル番号は C8D2-1C4A です xxx のディレクトリ 2006/11/12 22:26 <DIR> . 2006/11/12 22:26 <DIR> .. 2006/11/12 22:26 0 log.txt 2006/10/22 01:01 2,577 Tee.TXT 2006/11/12 12:43 1,132 Tee.VBS 3 個のファイル 3,709 バイト 2 個のディレクトリ 50,034,937,856 バイトの空き領域 $ exit
ちなみに、log.txtは、こんな風になっています。
Microsoft Windows XP [Version 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp. $ ドライブ F のボリューム ラベルは ボリューム です ボリューム シリアル番号は C8D2-1C4A です xxx のディレクトリ 2006/11/12 22:26 <DIR> . 2006/11/12 22:26 <DIR> .. 2006/11/12 22:26 0 log.txt 2006/10/22 01:01 2,577 Tee.TXT 2006/11/12 12:43 1,132 Tee.VBS 3 個のファイル 3,709 バイト 2 個のディレクトリ 50,034,937,856 バイトの空き領域 $
3.Cygwin版のscriptコマンドを使う
上の2つは、標準出力と標準エラー出力を、ファイルに保存してくれます。
しかし、標準入力というか、キーボードから入力した内容までは保存してくれません。
という訳で、Cygwin版のscriptコマンドです。
ちなみに、適当に突っ込んだので、どのパッケージに含まれているのか知りません。あるかな〜と思って、バンバン突っ込んだら あった。という状況です。
使い方を、以下に示します。
bash-3.1$ script log.txt スクリプトを開始しました、ファイルは log.txt です sh-3.1$ dir FePy.url IPCE Public\ SVN\ repository.url TODO log.txt trunk website sh-3.1$ exit exit スクリプトを終了しました、ファイルは log.txt です
ちなみに、log.txtは、こんな風になっています。
スクリプトは Sun Nov 12 22:33:50 2006 に開始しましたsh-3.1$ dir FePy.url IPCE Public\ SVN\ repository.url TODO log.txt trunk website sh-3.1$ exit exit スクリプトは Sun Nov 12 22:34:02 2006 に終了しました
Cygwin版のscriptは実行すると、シェルがCygwinのshになっちゃうようです。
まぁ、作業ログに残るんだから、少々の事は目をつぶりましょう。
まとめ
入力内容も保存してくれるという点では、Cygwin版のscriptコマンドかな?という気がします。
ただ、手軽に使いたい向きには、doslogやtee.vbsも お奨めでしょうね。
他に作業ログを残す方法があるんじゃないかな?と思っているんですが、ちょっと思いつきません。
どなたか、ご存知の方、居られませんですかねぇ。