2.7 テキストファイルへの書きこみ
 テキストファイルへ情報を書き込むときの方法です。テキストファイルへの書き込みには、テキストファイルオブジェクトのWriteLineを使います。

 書き込みには2種類あって、一つは上書きモードでの書き込み、もう一つは追加モードでの書き込みです。違いは、上書きモードの場合は既に保存されている内容が全て無くなり1からの書き込み、追加モードの場合は最終行以降に続きとして書き込みという違いです。どちらを使うかはファイルをオープンするときに指定します。

 なお、このメソッドを使うとアンチウィルスが悪さをしたと勘違いし「ウィルスかもしれません!」なんて警告メッセージが出るかも知れません。
使用例
 テキストファイルへの書き込みの例です。例では、追加モードを使用しています。

 例は、実行する度に日付、時刻、それとログインしているユーザ情報(ユーザID)をC:\happy\WinStart.logというファイルへ書き込みするプログラムです。早い話が、ログ取りのプログラムってことですね(笑)。たとえば、スタートアップフォルダにこのプログラムを実行するように仕込んでおくと、PCの起動ログ(誰が、いつ起動したか)が取れちゃったりします。怖いですね(汗)

 テキストファイルへ書き込みをする場合は、まずOpenTextFileのところでForWriting(=2)かForAppending(=8)を指定しファイルをオープンします。ちなみに、これらは定数ですので宣言しないと使えません。定数を使わないときは、値(2や8)をそのまま指定します。

 実際の書き込みは、オープンしたテキストファイルオブジェクトWriteLine …書き込む内容…で行います。書き込む内容には、好きなことを何でも書いてください。ただし、VBの文法に沿った内容で書かないとエラー!と怒られますが…(笑)
 それと、DのCloseメソッドですが、書き込みの時は必ず付けましょう。じゃないと、せっかく書き込みした内容が保存されないことがあります!

 ところで、ログインしているユーザID情報ですが、これはネットワークオブジェクト(C)から取得しています。詳しくは、9.5 ユーザ名やコンピュータ名を得るをどうぞ。

 ちなみに、このプログラムはC:\happy\WinStart.logというファイル(ログを記録するファイル)が必ずある!ということを前提にしているので、ファイルの有無チェックなどはしてません。もしファイルの有無チェックを付けたいときは、2.4 テキストファイルを新たに作る2.5 テキストファイルの行単位の読み込みあたりを参考にすると簡単にできますよっ!

 ■VBScriptの記述例
Option Explicit

'定数の宣言
Const ForReading = 1 '読み込み
Const ForWriting = 2 '書きこみ(上書きモード)
Const ForAppending = 8 '書きこみ(追記モード)

Dim objFileSys
Dim objOutFile
Dim objNetWork
Dim strAccountInfo

'@ユーザIDの取得
Set objNetWork = WScript.CreateObject("WScript.Network")
strAccountInfo = objNetWork.UserName

'Aファイルシステムオブジェクトの作成
Set objFileSys = WScript.CreateObject("Scripting.FileSystemObject")

'Bテキストファイルを書き込み(ただし追記モード)でオープン
Set objOutFile = objFileSys.OpenTextFile("C:\happy\WinStart.log",ForAppending)

'Cテキストファイルへの書き込み(1行書き込み)
objOutFile.WriteLine "Date[" & date & "] Time[" & time & _
                     "] User[" & strAccountInfo & "] - Login"

'Dテキストファイルのクローズ
objOutFile.Close

'Fオブジェクト破棄
Set objFileSys = Nothing
Set objOutFile = Nothing
Set objNetWork = Nothing

 ■JScript(JavaScript)の記述例
//定数の宣言
var ForReading = 1; //読み込み
var ForWriting = 2; //書きこみ(上書きモード)
var ForAppending = 8; //書きこみ(追記モード)

var objFileSys;
var objOutFile;
var objNetWork;
var strAccountInfo;

//@ユーザIDの取得
objNetWork = new ActiveXObject("WScript.Network");
strAccountInfo = objNetWork.UserName;

//Aファイルシステムオブジェクトの作成
objFileSys = new ActiveXObject("Scripting.FileSystemObject");

//Bテキストファイルを書き込み(ただし追記モード)でオープン
objOutFile = objFileSys.OpenTextFile("C:\\happy\\WinStart.log", ForAppending);

//Cテキストファイルへの書き込み(1行書き込み)
objOutFile.WriteLine("Date[" + getDate() + "] Time[" + getTime()
                   + "] User[" + strAccountInfo + "] - Login");

//Dテキストファイルのクローズ
objOutFile.Close();

//Fオブジェクト破棄
objFileSys = null;
objOutFile = null;
objNetWork = null;

function getTime() {
    //時刻を編集します
    var objDate = new Date();
    return objDate.getHours() + ":" + objDate.getMinutes() + ":" + objDate.getSeconds();
}
function getDate() {
    //日付を編集します
    var objDate = new Date();
    return objDate.getYear() + "/" + (objDate.getMonth() + 1) + "/" + objDate.getDay();
}
Copyright(C) 1999-2006 結城圭介。 All rights reserved