2012年07月15日

ファイルを変換するときのファイル名を簡単に作る vbslib 4

スクリプトがよく行う処理は、ファイルの内容の一部の変換です。

このような処理では、変換するファイルを読み込み用と書き込み用の両方で同時に開くことはできません。 なぜなら、書き込み用で開くと、その瞬間に、ファイルの内容が全てクリアされてしまい、読み込むことができなくなるからです。

そこで、一時的に、入力する内容をテンポラリー・ファイルにコピーしてから、テンポラリー・ファイルを読み込み用で開き、変換するファイルを書き込み用で開きます。

このテンポラリー・ファイルは、一般に、環境変数 TEMP の値になっているテンポラリー・フォルダーのパスの中に作ります。 vbslib 4 には、この中のファイルのパスを簡単に作れる GetTempPath 関数が用意されています。

temp_path = GetTempPath( "DataA_*.xml" )

を実行すると、temp_path には、たとえば、

C:\Users\user1\AppData\Local\Temp\Report\120401\DataA_120401_1300_1.xml

のようなパスが入ります。 このパスは、ファイルが存在しないパスになります。 また、日付ごとに分けられたフォルダーの中に自動的に入り、もし、2日前のフォルダーがあれば、自動的にそのフォルダーを削除します。

ただ、機密性の高いファイルを vbslib を使って処理を行うと、テンポラリー・フォルダーから情報が漏洩してしまう可能性ができてしまいます。 そうならないよう、他人の PC で vbslib を使った後は、

(Windows 7) C:\Users\(ユーザー名)\AppData\Local\Temp\Report
(Windows XP) C:\Documents and Settings\(ユーザー名)\Local Settings\Temp\Report

のフォルダーを削除してください。(vbslib のアンインストールのドキュメントにも書いています。)

変換した後の内容を、別のファイルにすることもよくあります。 たとえば、ファイル名の拡張子だけ変えたファイルだったり、ファイル名の最後に _modified などの名前を追加したファイルです。

vbslib 4 には、そのようなパスが簡単に作れる AddLastOfFileName 関数が用意されています。

AddLastOfFileName( "file.txt", ".html" ) = "file.html"
AddLastOfFileName( "file.txt", "_modified" ) = "file_modified.txt"

もし、AddLastOfFileName を使わないで、VBScript の標準的な関数だけで作るとしたら、とても大変なことになります。

vbslib 4 は、3-clause BSD ライセンスで提供されています。 誰でも無料で自由に使えます。 商用利用でも構いませんし、改変も再配布も自由です。

http://www.sage-p.com/vbslib/vbslib.htm

sage_p at 22:35│Comments(0)TrackBack(0)プログラミング 

トラックバックURL

この記事にコメントする

名前:
URL:
  情報を記憶: 評価: 顔