ファイル操作その2
と、言う訳で前回でファイル読み込みを行いましたが、
この章ではファイルへ書き込んでみます。
とは言っても、その工程はファイル読み込みとほとんど同じです。
サンプルを見てみましょう。
| Option Explicit
Dim FSO Dim objFile
Set FSO = CreateObject("Scripting.FileSystemObject")
Set objFile = FSO.OpenTextFile("C:\meso.txt",True)
objFile.WriteLine "ものたろう"
objFile.WriteLine "むかーし、むかし、おばあさんが川で洗濯していると、"
objFile.WriteLine "ドンヴラコ、ドンヴラコと、大きな『もの』が流れてきました。"
objFile.WriteLine "家に持ち帰り、割ってみると中から生物が出てきました。"
objFile.WriteLine "おじいさんとおばあさんはそれを「ものたろう」と名付けました"
objFile.Close
Set objFile = Nothing
Set FSO = Nothing
|
こんな感じです。ほぼ全くと言っていいほどファイル読み込みと同じですよね。
| Set objFile = FSO.OpenTextFile("C:\meso.txt",True)
|
この行はちょっと気になるかもしれません。「何で今から作るファイルを開いとんねん。あるわけないやん」とか思いますよね。
このメソッド、第2引数にTrueを指定すると
「ファイルが存在しない場合は新規作成してから開く」
と、言う意味になります。あった場合はそのまま全部上書きになります。
その他で、ファイル読み込みと違うのはReadLineの代わりにWriteLine使っているくらいなもんです。では、前章と同じく、もう少し汎用化してみましょう。
| Option Explicit
Const LOG_FILE_EXT = "log"
Dim FSO Dim objFile Dim strPath
Set FSO = CreateObject("Scripting.FileSystemObject")
strPath = FSO.BuildPath( _
FSO.GetParentFolderName(WScript.ScriptFullName), _
FSO.GetBaseName(WScript.ScriptName) & "." & LOG_FILE_EXT)
Set objFile = FSO.OpenTextFile(strPath,True)
objFile.WriteLine "ものたろう"
objFile.WriteLine "むかーし、むかし、おばあさんが川で洗濯していると、"
objFile.WriteLine "ドンヴラコ、ドンヴラコと、大きな『もの』が流れてきました。"
objFile.WriteLine "家に持ち帰り、割ってみると中から生物が出てきました。"
objFile.WriteLine "おじいさんとおばあさんはそれを「ものたろう」と名付けました"
objFile.Close
Set objFile = Nothing
Set FSO = Nothing
|
違うのはファイル作成の部分だけですね。
書き込みファイル名を「スクリプトファイル名 + 専用拡張子」としています。ここではログファイルを想定して「.log」としています。
GetBaseNameメソッドはファイル名を渡すとそのファイル名から拡張子を除いたもの(ベース名)を返すメソッドです。まんまですね。
ちなみに本当にログを吐く目的なのであれば、ファイルに書き込むのではなく、Appliction.ShellオブジェクトのLogEventメソッドを使用する事により、ファイルではなくWindowsのイベントログに内容をイベントとして書き出すことができます。「情報」「警告」「エラー」と言った付加情報もつけられますし、WMI等からも管理できますので、こちらの方が一石が何鳥にもなると思います。
この辺はまた、おいおい説明できればと思います。
この記事は訳に立ちましたか?