VBScriptでは「FileSystemObject」を使用することで様々なファイル操作を行えます。
ここでは、ファイルの作成(CreateTextFile)方法について解説します。
合わせて、作成したファイルに文字列を書き込んでみます。
書式
まずは、CreateTextFileメソッドの書式になります。
object.CreateTextFile(filename,[overwrite,[unicode]]) ファイルシステムオブジェクト.CreateTextFile(作成するファイル,[上書き可否,[文字コード]])
各引数について解説します。
パーツ | 和名 | 説明 | 省略 |
---|---|---|---|
object | オブジェクト | ファイルシステムオブジェクトを指定する | 不可 |
filename | ファイル名 | 作成するファイルを指定する | 不可 |
overwrite | 上書き可否 | 作成するファイルが既に存在する場合に上書きするかを指定 True:上書きを許可(既定値) False:上書きを許可しない | 可能 |
unicode | 文字コード | Unicodeでファイルを作成するかを指定 True:Unicode False:ASCII(Shift-JIS)(既定値) | 可能 |
ソースコード
サンプルのソースコードと実際に実行した時の動きについて解説します。
引数1[ファイル名]のみを指定
第一引数のファイル名のみを指定した、一番シンプルな構成になります。
Option Explicit ' 作成するファイル Const CREATE_FILE = "C:\workspace\VBScript\sample\Test.txt" ' 宣言 Dim fso ' ファイルシステムオブジェクトの作成 Set fso = CreateObject("Scripting.FileSystemObject") ' ファイルの作成 Call fso.CreateTextFile(CREATE_FILE) ' ファイルシステムオブジェクトの破棄 Set fso = Nothing
このサンプルを実行する下記の条件で空ファイルが作成されます。
・パス:C:\workspace\VBScript\sample
・ファイル名:Test.txt
・ファイルの内容:0バイト(空ファイル)
・文字コード:Shift-JIS
引数2[上書き可否]を指定
第一引数のファイル名に加え、第二引数の上書き可否も指定したサンプルになります。
ここでは、上書き可否の設定を既定値ではない、False(上書きを許可しない)を確認してみます。
Option Explicit ' 作成するファイル Const CREATE_FILE = "C:\workspace\VBScript\sample\Test.txt" ' 宣言 Dim fso ' ファイルシステムオブジェクトの作成 Set fso = CreateObject("Scripting.FileSystemObject") ' ファイルの作成 Call fso.CreateTextFile(CREATE_FILE, False) ' ファイルシステムオブジェクトの破棄 Set fso = Nothing
上書きを許可しない設定で、既に作成するファイルが存在する状態でスクリプトを実行すると、以下のようなエラー(既に同名のファイルが存在しています。)が表示されます。
引数3[文字コード]を指定
設定可能な全ての引数を設定したサンプルになります。
ここでは、上書き可否は既定値のTrue(上書きを許可する)、文字コードは既定値ではないTrue(Unicode)の組み合わせで確認してみます。
Option Explicit ' 作成するファイル Const CREATE_FILE = "C:\workspace\VBScript\sample\Test.txt" ' 宣言 Dim fso ' ファイルシステムオブジェクトの作成 Set fso = CreateObject("Scripting.FileSystemObject") ' ファイルの作成 Call fso.CreateTextFile(CREATE_FILE, True, True) ' ファイルシステムオブジェクトの破棄 Set fso = Nothing
このスクリプトを実行すると、下記のように文字コードが「Unicode」のファイルが作成されます。
(Unicodeで作成した場合は、BOMも付与されるようです)
ファイルを作成し、内容を書き込む
CreateTextFileメソッドでは、ファイルの作成に加え、文字列を書き込むことも可能です。
ここでは、Shift-JISでファイルを作成しつつ、「書き込みテスト」と出力してみます。
Option Explicit ' 作成するファイル Const CREATE_FILE = "C:\workspace\VBScript\sample\Test.txt" ' 宣言 Dim fso, data ' ファイルシステムオブジェクトの作成 Set fso = CreateObject("Scripting.FileSystemObject") ' ファイルの作成とオープン Set data = fso.CreateTextFile(CREATE_FILE) ' 文字列の書き込み data.WriteLine("書き込みテスト") ' ファイルのクローズ data.Close ' ファイルシステムオブジェクトの破棄 Set fso = Nothing
このサンプルを実行すると、下記のようにファイルを作成しつつ、文字列を書き込むことが可能です。
コメント