(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
ファイルが存在するかどうかを返します。
ワイルドカードは使えません。
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
← 注意
← 注意
← 注意
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 に指定したパスに、ファイルが存在しないとエラーになります。
Sub  FileSystemObject::DeleteFolder( path as string, [force as boolean] )
フォルダを削除します。
【引数】
path
削除するフォルダのパス
force
True なら、リードオンリーでも強制削除
フォルダの中にファイルがあっても削除します。
ファイルサイズ(バイト)
拡張子の説明。例:"テキスト ドキュメント"
.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 f = g_fs.GetFile("list.txt")
WScript.Echo  f.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
関連
Dim  File::Attributes  as Long
ReadOnly 定数などが使えます
属性。 読み取り専用、隠しファイルなど
サンプル
Dim fi
Set fi = g_fs.GetFile( path ) : fi.Attributes = fi.Attributes and not ReadOnly : fi = 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 オブジェクトのメンバーにはアクセスできなくなります。
Dim  g_fs, fo
Set  g_fs = CreateObject("Scripting.FileSystemObject")
Set  fo = 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
直下のサブフォルダ。
  Dim  fo, subfo

  Set fo = g_fs.GetFolder( "." )
  For Each subfo in fo.SubFolders  '// subfo as Folder
    echo  subfo.Name
  Next
サンプル:
の返り値です。
関連
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 は、完全にバイナリデータを取得できます。
Function  TextStream::ReadAll() as string
テキストストリームから全て取り出します。
【引数】
返り値
テキストストリームから取り出した内容
2MB 以上であっても取得できます。

返り値は、Len でサイズを取得してもファイルサイズではありません。
0x0D 0x0A を 0x0D に変換しません。
0x00 も取得できます。
0xEAEB は、0x8145 に変わります。
Sub  TextStream::Skip( n as integer )
テキストストリームを指定した文字数だけスキップします。
Sub  TextStream::SkipLine()
テキストストリームを1行スキップします。
  path = "a.txt"
  Set g_fs = WScript.CreateObject( "Scripting.FileSystemObject" )
  Set f = g_fs.OpenTextFile( path )

  Do Until f.AtEndOfStream
    line = f.ReadLine()
    If line = "point" Then
      i_line = f.Line - 1  '// 行番号を取得。(*1)
      Exit Do
    End If
  Loop

  WScript.Echo  "i_line = " & i_line

  Set f = g_fs.OpenTextFile( path )
  For i=1 To  i_line - 1 : f.SkipLine : Next  '// 行へジャンプ

  WScript.Echo  f.ReadLine()  '// "point" が書いてある行

  f = Empty
  g_fs = Empty
(*1) ReadLine した後なので、line の行番号は f.Line 行目ではなく f.Line-1 行目