(for Internet Explorer)
← ▼ ▲
↑
FileSystemObject
CopyFile
ファイルをコピーします
MoveFile
ファイルを移動します
MoveFolder
フォルダを移動します
[ 親: ファイル操作 ]
FolderExists
フォルダが存在するかどうかを返します
(Web)
ファイルを削除します
CopyFolder
フォルダをコピーします
FileExists
ファイルが存在するかどうかを返します
DeleteFile
Set g_fs = CreateObject("Scripting.FileSystemObject")
オブジェクトの取得
メンバ
GetFile
→ File オブジェクト
CreateFolder
フォルダを作成します。
→ ファイル名、パス
WSH だけでなく VBA でも使えます。
→ TextStream （テキストファイル）
関連
← ▼ ▲
FileSystemObject::CopyFile
Set fs = CreateObject("Scripting.FileSystemObject")
fs.CopyFile "ipLibCom.h", "..\..\..\inc\ipLibCom.h", True
Set fs = Nothing
強制上書き
新しくできるファイル名も含める
src から dst にファイルをコピーします。
MSDN(Web)
Sub FileSystemObject::CopyFile( src as string, dst as string [, overwrite as Bool] )
【引数】
src
コピーするファイルのパス（コピー元、ワイルドカード可）
dst
コピー先のファイルのパス
サンプル
overwrite
上書きするかどうか。 デフォルト True (*1)
[ 親: FileSystemObject ]
False のとき、上書きしようとするとエラーになります。
(*1)
→ ファイルコピーの引数
参考
エラー
src に指定したファイルが無いとき、エラー 76
← ▼ ▲
FileSystemObject::CopyFolder
src から dst にフォルダをコピーします。
Sub FileSystemObject::CopyFolder( src as string, dst as string [, overwrite as Bool] )
【引数】
src
コピーするフォルダのパス（コピー元、ワイルドカード可(*2)）
dst
コピー先のフォルダのパス
overwrite
上書きするかどうか。 デフォルト True (*1)
False のとき、上書きしようとするとエラーになります。
(*1)
→ ファイルコピーの引数
参考
[ 親: FileSystemObject ]
(*2)
ワイルドカードは、コピー先にマッチしないときに限り使えます。
(Web)
← ▼ ▲
FileSystemObject::FileExists
Function FileSystemObject::FileExists( path as string ) as Boolean
ファイルが存在するかどうかを返します。
ワイルドカードは使えません。
MSDN(Web)
[ 親: FileSystemObject ]
関連
→ Dir - ファイルの有無 (Excel)
← ▼ ▲
FileSystemObject::FolderExists
Function FileSystemObject::FolderExists( path as string ) as Boolean
フォルダが存在するかどうかを返します。
ワイルドカードは使えません。
MSDN(Web)
[ 親: FileSystemObject ]
← ▼ ▲
FileSystemObject::MoveFile
MSDN(Web)
Sub FileSystemObject::MoveFile( src as string, dst as string )
src から dst にファイルを移動します。
【引数】
src
移動するファイル（移動元、ワイルドカード可）
dst
移動先のファイルパス（フォルダのときは、最後に \）
Set fs = CreateObject("Scripting.FileSystemObject")
fs.MoveFile "ipLibCom.h", "..\..\..\inc\ipLibCom.h"
Set fs = Nothing
新しくできるファイル名も含める
サンプル
【補足】
ドライブをまたぐときは、エラーになります
[ 親: FileSystemObject ]
← ▼ ▲
FileSystemObject::MoveFolder
MSDN(Web)
フォルダを移動します。
使い方は、
と同じです。
FileSystemObject::MoveFile
[ 親: FileSystemObject ]
← ▼ ▲
FileSystemObject::CreateFolder
フォルダを作成します。
すでにフォルダがあるときは、エラーになります。
Dim g_fs : Set g_fs = CreateObject( "Scripting.FileSystemObject" )
If not g_fs.FolderExists( path **** ) Then g_fs.CreateFolder path ****
← ▼ ▲
FileSystemObject::GetFileName
MSDN (Web)
Set fs = CreateObject("Scripting.FileSystemObject")
WScript.Echo fs.GetFileName( "aa\bb.txt" ) // bb.txt と表示
パスの最後の部分（ファイル名、またはフォルダ名）を返します。
→ ファイル名
[ 親: ファイル名 ]
関連
サンプル：
Funtcion FileSystemObject::GetFileName( Path as string ) as string
← ▼ ▲
FileSystemObject::GetExtensionName
Dim ext : ext = g_fs.GetExtensionName( path )
サンプル：
Funtcion FileSystemObject::GetExtensionName( Path as string ) as string
ファイルパスから拡張子を取り出します。
関連
Path
GetExtensionName
"C:\folder\file.txt"
"txt"
→ ファイル名
""
"C:\folder\file."
""
"C:\folder\file"
"C:\folder.files\file"
""
"file.html"
"html"
← ▼ ▲
FileSystemObject::GetFile
Function FileSystemObject::GetFile( path as string ) as File
指定したパスに対応するファイルオブジェクトを返します。
(Web)
→ File オブジェクト
← ▼ ▲
FileSystemObject::GetFolder
Function FileSystemObject::GetFolder( path as string ) as Folder
指定したパスに対応するフォルダー・オブジェクトを返します。
(Web)
→ Folder オブジェクト
指定したパスにフォルダーが無いときはエラーになります。
参考
← ▼ ▲
FileSystemObject::GetParentFolderName
Function FileSystemObject::GetParentFolderName( path as string ) as string
親フォルダのパスを返します。
path 引数
返り値
"C:\folder\file.txt"
"C:\folder"
"C:\folder"
"C:\"
"C:\"
""
""
""
"C:/folder"
"C:/folder/file.txt"
[ 親: ファイル名 ]
"http://www.a.com/a.htm"
"http://www.a.com"
"http://www.a.com/"
"http:"
"a\b\file.txt"
"http://www.a.com"
"http:"
"C:\"
"C:\folder\"
"a\b"
""
"file.txt"
"a"
"a\b"
ファイル名だけのときは "" が返るため、次のようなコードは避けてください。
g_fs.GetParentFolderName( fname ) +"\"+ g_fs.GetBaseName( exe_base_name )
関連
"\folder\"
""
"\folder\file.txt"
"\folder"
分類
フル・パス
相対パス
ファイル名
Linux 形式
URL
← 注意
← 注意
← 注意
→ GetParentFullPath
""
"a"
→ Dic_searchParent
← ▼ ▲
FileSystemObject::OpenTextFile
Function FileSystemObject::OpenTextFile( path as string, [iomode as integer],
[b_create as boolean], [unicode as integer] ) as TextStream
ファイルを開きます。 ファイルの作成または読み込みを開始します。
【引数】
path
ファイルのパス
iomode
1=リード、2=ライト、8=追加、省略時=1
b_create
ファイルが無いときにエラーに「しない」かどうか
unicode
返り値
TextStream オブジェクト
True=Unicode, False=Ascii, -2=自動判定
(Web)
Const ForReading = 1, ForWriting = 2, ForAppending = 8
→ ファイル内アクセス（テキスト）
エラー
→ E_FileNotExist
→ E_WriteAccessDenied
→ OpenTextFile (vbslib)
関連
← ▼ ▲
FileSystemObject::CreateTextFile
(Web)
Function FileSystemObject::CreateTextFile( path as string,
[b_overwrite as boolean], [b_unicode as boolean] ) as TextStream
ファイルを作成します。
【引数】
path
ファイルのパス
b_overwrite
上書きするかどうか, デフォルト=False
b_unicode
返り値
TextStream オブジェクト
True=Unicode, False=Ascii, デフォルト=False
b_overwrite = False にして、ファイルがすでに存在していたときは、エラー
E_AlreadyExist
になります。
E_PathNotFound
path のファイルを格納するフォルダが存在しないときは、エラー
になります。
→ CreateFile (vbslib)
関連
→ テキストファイルを作成する (Write) サンプル
← ▼ ▲
FileSystemObject::DeleteFile
(Web)
Sub FileSystemObject::DeleteFile( path as string, [force as boolean] )
ファイルを削除します。
【引数】
path
削除するファイルのパス
iomode
True なら、リードオンリーでも強制削除
path に指定したパスに、ファイルが存在しないとエラーになります。
読み取り専用になっているファイルを指定すると、エラー70になります。
→ FileSystemObject::FileExists
← ▼ ▲
FileSystemObject::DeleteFolder
Sub FileSystemObject::DeleteFolder( path as string, [force as boolean] )
フォルダを削除します。
【引数】
path
削除するフォルダのパス
force
True なら、リードオンリーでも強制削除
フォルダの中にファイルがあっても削除します。
(Web)
← ▼ ▲
FileSystemObject::GetTempName
Function FileSystemObject::GetTempName() as string
ファイル名(8.3形式)に使えるランダムな文字列を返します。
radB238E.tmp
返り値の例：
関連
→ GetTempPath (vbslib)
← ▼ ▲
ファイルサイズ（バイト）
拡張子の説明。例："テキスト ドキュメント"
File オブジェクト
MSDN(Web)
.Size
.Type
プロパティ
.Copy
.Delete
.Move
.OpenAsTextStream
メソッド
.Path
.Name
.ShortPath
.ShortName
フルパス （処理が遅いです）
ファイル名。フォルダパスを除いたもの。例：a.txt （処理が遅いです）
フルパス（8.3形式）
ファイル名（8.3形式）
Drive オブジェクト
親フォルダ（
作成日時（取得のみ）
更新日時（取得のみ）
アクセス日時（取得のみ）
.Drive
.ParentFolder
.DateCreated
.DateLastModified
.DateLastAccessed
Folder オブジェクト
）
FileSystemObject::GetFile
File オブジェクトは、
で、取得できます。
.DateLastModified
Set g_fs = CreateObject("Scripting.FileSystemObject")
Set file = g_fs.GetFile( "list.txt" )
WScript.Echo file.DateLastModified
.Attributes
属性。 読み取り専用、隠しファイルなど
← ▼ ▲
File::DateLastModified
Dim File::DateLastModified as Date
Date
Set g_fs = CreateObject("Scripting.FileSystemObject")
Set file = g_fs.GetFile( "list.txt" )
WScript.Echo file.DateLastModified
キーワード：
タイムスタンプ、更新日時
Set g_fs = CreateObject("Scripting.FileSystemObject")
WScript.Echo g_fs.GetFile( "list.txt" ).DateLastModified
関連
→ MakeRule_compare (vbslib)
タイムスタンプのテストの注意
タイムスタンプに依存するテストは、ソースのバージョン管理ソフトを使うと、
正しく動かない可能性があります。 なぜなら、バージョン管理ソフトは
タイムスタンプを勝手に変えてしまうからです。
この問題に対処するには、テストで使うファイルを zip 圧縮しておきます。
→ touch (vbslib)
更新日時。 このプロパティは、読み取り専用です。
サンプル
→ SetDateLastModified (vbslib)
→ MD5List
の Stamp (vbslib)
← ▼ ▲
File::Attributes
Dim File::Attributes as Long
(Web)
ReadOnly 定数(=1)
属性。 読み取り専用、隠しファイルなど
サンプル
Set g_fs = CreateObject("Scripting.FileSystemObject")
Set file = g_fs.GetFile( path )
file.Attributes = file.Attributes or ReadOnly
file = Empty
読み取り専用にする
などが使えます
Set g_fs = CreateObject("Scripting.FileSystemObject")
SetFilesToNotReadOnly g_fs.GetFolder( "C:\folder" )
Sub SetFilesToNotReadOnly( folder )
For Each file In folder.Files
file.Attributes = file.Attributes and not ReadOnly
Next
For Each sub_folder In folder.SubFolders
SetFilesToNotReadOnly sub_folder
Next
End Sub
読み取り専用かどうかを取得する
サンプル
Set g_fs = CreateObject("Scripting.FileSystemObject")
is_read_only = ( ( g_fs.GetFile( path ).Attributes and ReadOnly ) <> 0 )
読み取り専用ではなくす
サンプル
Set g_fs = CreateObject("Scripting.FileSystemObject")
Set file = g_fs.GetFile( path )
file.Attributes = file.Attributes and not ReadOnly
file = Empty
フォルダーの中にあるすべてのファイルを読み取り専用ではなくす
サンプル
参考
→ サブフォルダにあるファイル一覧 （再帰、ネスト）
キーワード：
リードオンリー, 読み取り専用
→ SetFilesToNotReadOnly
→ GetReadOnlyList
← ▼ ▲
Folder オブジェクト
MSDN(Web)
.DateCreated
.DateLastModified
.DateLastAccessed
プロパティ
.Copy
.Delete
.Move
.OpenAsTextStream
メソッド
.Size
.Type
.Attributes
直下のファイル（
直下のサブフォルダ（Folder オブジェクト）のコレクション
.Path
.Name
.ShortPath
.ShortName
フルパス （処理が遅いです）
フォルダ名 （処理が遅いです）
フルパス（8.3形式）
フォルダ名（8.3形式）
.Drive
.ParentFolder
.IsRootFolder
.Files
.SubFolders
Drive オブジェクト
親フォルダ（Folder オブジェクト）
作成日時（取得のみ）
更新日時（取得のみ）
アクセス日時（取得のみ）
File オブジェクト
）のコレクション
Folder オブジェクトは、FileSystemObject::GetFolder で、取得できます。
.Files
取得
フォルダが削除されると、Folder オブジェクトのメンバーにはアクセスできなくなります。
Set g_fs = CreateObject("Scripting.FileSystemObject")
Set folder = g_fs.GetFolder( "C:\folder" )
.SubFolders
← ▼ ▲
Folder::Files
.Count
For Each i In Folder::Files
.Item( FileName )
フォルダの中のファイルの数。サブフォルダの中は除く
File オブジェクトを参照する
をループする
(Web)
Folder::Files.Item
Function Folder::Files.Item( FileName as string ) as File
FileName で指定したファイル名に一致するファイルオブジェクトを返します。
注意： FileName に変数を指定するときは、次のように型を指定してください。
Dim fo, fname
Set fo = g_fs.GetFolder( folder_path )
fname = "1.txt"
Set f = fo.Files.Item( CStr( fname ) )
CStr
File オブジェクト
← ▼ ▲
Folder::SubFolders
Dim Folder::SubFolders as Folders
直下のサブフォルダ。
(Web)
Set folder = g_fs.GetFolder( "." )
For Each sub_folder In folder.SubFolders '// sub_folder as Folder
echo sub_folder.Name
Next
echo folder.SubFolders.Count
サンプル
folder.SubFolders(0).Name
配列番号を指定して要素にアクセスすることはできません。
← ▼ ▲
TextStream （テキストファイル）
(Web)
→ Read
→ ReadLine
→ ReadAll
→ SkipLine
→ Skip
CreateTextFile
OpenTextFile
や
の返り値です。
→ Line
→ AtEndOfStream
関連
→ StringStream クラス (vbslib)
→ ファイル内アクセス（テキスト）
TextStream は、次の関数から取得できます。
→ OpenTextFile
→ CreateTextFile
→ OpenForWrite
→ OpenForRead
→ StringStream クラス
→ Write
→ WriteLine
→ WriteBlankLines
← ▼ ▲
Read (TextStream)
(Web)
Function TextStream::Read( n as integer ) as string
テキストストリームから指定文字数だけ取り出し、ストリームポインタを進めます。
【引数】
n
取り出す文字数(*1)
テキストストリームから取り出した内容
返り値
(*1)
非 Unicode で開いたときは、2バイトからなるマルチバイト文字（漢字など）
も 1文字として数えます。バイト数ではありません。
改行文字は、0D 0A のときは2文字として数えます。
← ▼ ▲
ReadLine (TextStream)
Function TextStream::ReadLine() as string
テキストストリームから１行取り出し、ストリームポインタを１行進めます。
関連
→ テキストファイルの内容を読む (Read)
【引数】
返り値
テキストストリームから取り出した１行
31 32 33 0D 0A 34 35 0D 0A 36
ファイル(*1)
返り値
31 32 33
31 32 33
31 32 33 0A 34 35 0D 0A 36
31 32 33 0D 34 35 0D 0A 36
Len(*2)
34 35 0D 0A 36
3
34 35 0D 0A 36
3
→ 改行コード
36
31 32 33 0D 34 35
6
EOF(*3)
False
31 32 33
True
31 32 33 0D 0A
False
False
True
31 32 33
31 32 33
3
3
(*1) ストリームポインタが指すデータ。灰色の部分は、次回以降の
ReadLine で読む値
(*2) Len( 返り値 ) の値
(*3) ReadLine 実行後の TextStream::AtEndOfStream の返り値
改行コードの違いによる動き
0D(vbCR), 0A(vbLF) と、0A は、1回の ReadLine で取れる区切りになります。
0D は、改行文字として返り値の中に入ります。Echo すると改行されます。
改行文字かどうかは、ウォッチで asc(mid( line, 1 )) と入力して表示される
文字コードから判別できます。
返り値に、改行文字は含まれません。
1行が 2MB 以上であっても取得できます。
Shell:Exec で起動したプログラムから出力される標準出力ストリームに改行
コードがないときは、本関数の中で待ち状態に入ります。
プログラムが終了したら、待ち状態から抜けます。
バイナリファイル
2種類の改行文字（0D,0A と 0A） が区別できないので、バイナリデータを
完全に取得することはできません。
TextStream::ReadAll は、完全にバイナリデータを取得できます。
(Web)
←
↓