2006-11-12 寒いよぅ
■[tips] コマンドプロンプトの出力を、ファイルに保存する 
ちと作業をしていて少し煮詰まってきたので、気分転換に。(わはは
ちょっと前に、作業の過程をログに取りましょう。なんてトピックを読んだ事がありました。
- コアテクの路地: 作業ログの取り方
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)を使う
- 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つは、標準出力と標準エラー出力を、ファイルに保存してくれます。
しかし、標準入力というか、キーボードから入力した内容までは保存してくれません。
ちなみに、適当に突っ込んだので、どのパッケージに含まれているのか知りません。あるかな〜と思って、バンバン突っ込んだら あった。という状況です。
使い方を、以下に示します。
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も お奨めでしょうね。
他に作業ログを残す方法があるんじゃないかな?と思っているんですが、ちょっと思いつきません。
どなたか、ご存知の方、居られませんですかねぇ。
- 19 http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&rls=GGLG,GGLG:2006-19,GGLG:ja&q=vb2005+FORM+参照
- 13 http://python.ring.hatena.ne.jp/
- 11 http://www.google.co.jp/search?sourceid=navclient-ff&ie=UTF-8&rls=GGGL,GGGL:2006-30,GGGL:ja&q=visualwx
- 9 http://www.google.co.jp/search?hl=ja&q=コマンドプロンプト ログを残す&lr=
- 9 http://www.python.jp/Zope/workshop
- 4 http://coreblog.org/jp/jzi/genre/wxWidget/
- 4 http://csharper.blog57.fc2.com/blog-category-19.html
- 4 http://www.google.co.jp/search?hl=ja&q=mantis インストール&lr=
- 4 http://www.google.com/search?hl=ja&lr=&ie=UTF-8&oe=UTF-8&num=50&q=visualwx
- 3 http://1470.net/mm/related?memo=59869
私もPythonリングに入っているので、
ここにきました。
How to become a hackerを読んで最近はじめた
者ですが、よろしくお願いします。
コマンドプロンプトの出力をファイルへって
dirだけなら、DOS窓で、
C:¥>dir>>test.txt
でやったことがあるんですが、ソフトを使えば
すべて記録できるんですね。何か機会があったら使ってみたいと思います。
最近は、段々横着になってきていまして、コマンドプロンプトを起動したら、自動的に結果をファイル保存してくれるようなツールが無いかな?と思っています。
(既にコマンドを打つ事すら面倒臭い)
まぁ、こういった横着な考えも、HDD容量が余っている昨今ならではでしょうね。