(for Internet Explorer)
ファイルをコピーします
ファイルを移動します
フォルダを移動します
フォルダが存在するかどうかを返します
ファイルを削除します
フォルダをコピーします
ファイルが存在するかどうかを返します
Set g_fs = CreateObject("Scripting.FileSystemObject")
オブジェクトの取得
メンバ
フォルダを作成します。
WSH だけでなく VBA でも使えます。
関連
Set fs = CreateObject("Scripting.FileSystemObject")
fs.CopyFile  "ipLibCom.h", "..\..\..\inc\ipLibCom.h", True
Set fs = Nothing
強制上書き
新しくできるファイル名も含める
src から dst にファイルをコピーします。
Sub  FileSystemObject::CopyFile( src as string, dst as string [, overwrite as Bool] )
【引数】
src
コピーするファイルのパス(コピー元、ワイルドカード可)
dst
コピー先のファイルのパス
サンプル
overwrite
上書きするかどうか。 デフォルト True (*1)
False のとき、上書きしようとするとエラーになります。
(*1)
参考
エラー
src に指定したファイルが無いとき、エラー 76
src から dst にフォルダをコピーします。
Sub  FileSystemObject::CopyFolder( src as string, dst as string [, overwrite as Bool] )
【引数】
src
コピーするフォルダのパス(コピー元、ワイルドカード可(*2))
dst
コピー先のフォルダのパス
overwrite
上書きするかどうか。 デフォルト True (*1)
False のとき、上書きしようとするとエラーになります。
(*1)
参考
(*2)
ワイルドカードは、コピー先にマッチしないときに限り使えます。
Function  FileSystemObject::FileExists( path as string ) as Boolean
ファイルが存在するかどうかを返します。
ワイルドカードは使えません。
関連
→ Dir - ファイルの有無 (Excel)
Function  FileSystemObject::FolderExists( path as string ) as Boolean
フォルダが存在するかどうかを返します。
ワイルドカードは使えません。
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
新しくできるファイル名も含める
サンプル
【補足】
ドライブをまたぐときは、エラーになります
フォルダを移動します。
使い方は、
と同じです。
フォルダを作成します。
すでにフォルダがあるときは、エラーになります。
  Dim g_fs : Set  g_fs = CreateObject( "Scripting.FileSystemObject" )
  If not g_fs.FolderExists( path **** ) Then  g_fs.CreateFolder  path ****
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"
Function  FileSystemObject::GetFile( path as string ) as File
指定したパスに対応するファイルオブジェクトを返します。
Function  FileSystemObject::GetFolder( path as string ) as Folder
指定したパスに対応するフォルダー・オブジェクトを返します。
指定したパスにフォルダーが無いときはエラーになります。
参考
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
← 注意
← 注意
← 注意
""
"a"
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=自動判定
Const  ForReading = 1, ForWriting = 2, ForAppending = 8
エラー
関連
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 にして、ファイルがすでに存在していたときは、エラー
になります。
path のファイルを格納するフォルダが存在しないときは、エラー
になります。
関連
Sub  FileSystemObject::DeleteFile( path as string, [force as boolean] )
ファイルを削除します。
【引数】
path
削除するファイルのパス
iomode
True なら、リードオンリーでも強制削除
path に指定したパスに、ファイルが存在しないとエラーになります。
読み取り専用になっているファイルを指定すると、エラー70になります。
Sub  FileSystemObject::DeleteFolder( path as string, [force as boolean] )
フォルダを削除します。
【引数】
path
削除するフォルダのパス
force
True なら、リードオンリーでも強制削除
フォルダの中にファイルがあっても削除します。
Function  FileSystemObject::GetTempName() as string
ファイル名(8.3形式)に使えるランダムな文字列を返します。
radB238E.tmp
返り値の例:
関連
ファイルサイズ(バイト)
拡張子の説明。例:"テキスト ドキュメント"
.Size
.Type
プロパティ
.Copy
.Delete
.Move
.OpenAsTextStream
メソッド
.Path
.Name
.ShortPath
.ShortName
フルパス (処理が遅いです)
ファイル名。フォルダパスを除いたもの。例:a.txt (処理が遅いです)
フルパス(8.3形式)
ファイル名(8.3形式)
Drive オブジェクト
親フォルダ(
作成日時(取得のみ)
更新日時(取得のみ)
アクセス日時(取得のみ)
.Drive
.ParentFolder
.DateCreated
.DateLastModified
.DateLastAccessed
File オブジェクトは、
で、取得できます。
Set g_fs = CreateObject("Scripting.FileSystemObject")
Set file = g_fs.GetFile( "list.txt" )
WScript.Echo  file.DateLastModified
属性。 読み取り専用、隠しファイルなど
Dim  File::DateLastModified  as 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
関連
タイムスタンプに依存するテストは、ソースのバージョン管理ソフトを使うと、
正しく動かない可能性があります。 なぜなら、バージョン管理ソフトは
タイムスタンプを勝手に変えてしまうからです。

この問題に対処するには、テストで使うファイルを zip 圧縮しておきます。
更新日時。 このプロパティは、読み取り専用です。
サンプル
の Stamp (vbslib)
Dim  File::Attributes  as Long
属性。 読み取り専用、隠しファイルなど
サンプル
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
サンプル
参考
キーワード:
.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 オブジェクト)
作成日時(取得のみ)
更新日時(取得のみ)
アクセス日時(取得のみ)
)のコレクション
Folder オブジェクトは、FileSystemObject::GetFolder で、取得できます。
取得
フォルダが削除されると、Folder オブジェクトのメンバーにはアクセスできなくなります。
Set g_fs = CreateObject("Scripting.FileSystemObject")
Set folder = g_fs.GetFolder( "C:\folder" )
.Count
For Each i In Folder::Files
フォルダの中のファイルの数。サブフォルダの中は除く
File オブジェクトを参照する
をループする
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
Dim  Folder::SubFolders as Folders
直下のサブフォルダ。
    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 は、次の関数から取得できます。
Function  TextStream::Read( n as integer ) as string
テキストストリームから指定文字数だけ取り出し、ストリームポインタを進めます。
【引数】
n
取り出す文字数(*1)
テキストストリームから取り出した内容
返り値
(*1)
非 Unicode で開いたときは、2バイトからなるマルチバイト文字(漢字など)
も 1文字として数えます。バイト数ではありません。
改行文字は、0D 0A のときは2文字として数えます。
Function  TextStream::ReadLine() as string
テキストストリームから1行取り出し、ストリームポインタを1行進めます。
関連
【引数】
返り値
テキストストリームから取り出した1行
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 は、完全にバイナリデータを取得できます。