Dim MyFSO Set MyFSO = CreateObject("Scripting.FileSystemObject") MyFSO.DeleteFile "削除したいファイルのフルパス" Set MyFSO = Nothing |
DeleteFile, DeleteFolder どちらも可。 |
Dim MyFSO Set MyFSO = CreateObject("Scripting.FileSystemObject") MyFSO.CopyFile "コピー元のフルパス", "コピー先のフルパス", True Set MyFSO = Nothing |
コピー先に同名のファイルがあった場合、上書きされて困るなら、3行目のTrueはFalseに。 CopyFile, CopyFolder どちらも可。 このCopyFileをMoveFileに書き換えれば、とうぜん処理もそれなりに(移動) |
Dim MyFSO Dim MyChk Set MyFSO = CreateObject("Scripting.FileSystemObject") MyChk = MyFSO.FileExists("判定したいファイルのフルパス") Set MyFSO = Nothing If MyChk = True Then 何か処理をさせてみたり End If |
FileExists, FolderExists どちらも可。 |
Dim MyFSO Dim MyFile Dim MyFVal Set MyFSO = CreateObject("Scripting.FileSystemObject") Set MyFile = MyFSO.GetFile(属性を知りたいファイルのフルパス) MyFVal = MyFile.Size Set MyFile = Nothing Set MyFSO = Nothing MsgBox MyFVal, vbOKOnly, "ファイルサイズ" |
Sizeのほか、DateCreated(作成年月日時刻)、DateLastModified(更新年月日時刻)なんてのもあり。 フォルダにも適用可(FileをFolderに書き換えるだけ)。 |
Dim MyFSO Dim MyFolder Dim MyALLFiles, MyFile Set MyFSO = CreateObject("Scripting.FileSystemObject") Set MyFolder = MyFSO.GetFolder("フォルダのフルパス") Set MyALLFiles = MyFolder.Files For Each MyFile In MyALLFiles If Right(MyFile.Name, 4) = ".jpg" Then MyFSO.DeleteFile MyFile End If Next Set MyFile = Nothing Set MyALLFiles = Nothing Set MyFolder = Nothing Set MyFSO = Nothing |
CreateObject("Scripting.FileSystemObject") とは全然関係ないけど Right(文字列, 4)は、文字列全体から切り出した右側4文字ってこと。 If Right(MyFile.Name, 4) = ".jpg" Then 'もしファイル名の右側4文字が".jpg"なら MyFSO.DeleteFile MyFile 'そのファイルを削除しろ End If実はこれだと右側4文字が".JPG"の場合は削除しません。 大文字小文字関係なしに削除したいなら、ちょっと書き換える必要あり If LCase(Right(MyFile.Name, 4)) = ".jpg" Then 'もしファイル名の右側4文字を小文字化すると".jpg"になるなら とか If UCase(Right(MyFile.Name, 4)) = ".JPG" Then 'もしファイル名の右側4文字の大文字化すると".JPG"になるなら とか これなら".jpg"だろうが".jPG"だろうが".jpG"だろうが区別しないでやってくれる。 ついでにたとえば If Right(MyFile.Name, 4) = ".jpg" Then End If をはずして、 For Each MyFile In MyALLFiles MyFSO.DeleteFile MyFile Nextというふうにすると、それこそファイル名なんか関係なしにフォルダ中の全てのファイルを削除してくれちゃう。 この「無条件」全削除は、自分でつくったフォルダ相手にやる分にはまあいいんですけど、Windowsに初めからあったようなフォルダ相手にはやらないほうがいいです。 Windowsに初めからあるフォルダってのは、かなり重要なファイルを「隠し持っている」場合がある。 ユーザーがうっかり削除したりなんてことがないように隠してるんでしょうけど、このFor Each 〜 Next型の無条件Delete命令は、そんなものもひっくるめて削除します(Delete命令出す側からすれば、むしろ見える状態にしておいてくれたほうが気をつけるんだけど) とにかく全部やれと命令されれば徹底的にやり抜く。 その結果なにが起こるかわかったもんじゃないんで、くれぐれも気をつけて。 |
Dim MyFSO, MyFolder, MyALLFiles, MyFile Dim MyStrCurrDir '最近、カレントディレクトリ(現在地)取得に CreateObject("WScript.Shell").CurrentDirectory を使うのが怖くなってきた。 '↓のほうが信用できそう。 MyStrCurrDir = Replace(WScript.ScriptFullName, WScript.ScriptName, "") MyStrCurrDir = Left(MyStrCurrDir, Len(MyStrCurrDir) - 1) Set MyFSO = CreateObject("Scripting.FileSystemObject") Set MyFolder = MyFSO.GetFolder(MyStrCurrDir) Set MyALLFiles = MyFolder.Files For Each MyFile In MyALLFiles MyFSO.DeleteFile MyFile Next Set MyFile = Nothing Set MyALLFiles = Nothing Set MyFolder = Nothing Set MyFSO = Nothingで、ダブルクリック。
Dim MyFSO Set MyFSO = CreateObject("Scripting.FileSystemObject") MyFSO.CreateFolder("つくりたいフォルダのフルパス") Set MyFSO = Nothing |
CreateFileはダメ。 |
Dim MyFSO Dim MyTXTFILE Set MyFSO = CreateObject("Scripting.FileSystemObject") Set MyTXTFILE = MyFSO.CreateTextFile("つくりたいファイルのフルパス", True) MyTXTFILE.WriteLine "1行目" MyTXTFILE.WriteLine "2行目" MyTXTFILE.WriteLine "3行目" MyTXTFILE.Write "4行目" MyTXTFILE.Write "まだ4行目" MyTXTFILE.Close '←これ書くの忘れないでね Set MyTXTFILE = Nothing Set MyFSO = Nothing |
WriteLineとWriteの違いってのは大体想像がつくとおり、改行の有無 |
Dim MyFSO Dim MyTXTFILE Set MyFSO = CreateObject("Scripting.FileSystemObject") Set MyTXTFILE = MyFSO.OpenTextFile("既存テキストファイルのフルパス", 2か8 どっちかの数字) MyTXTFILE.WriteLine "abc" MyTXTFILE.WriteLine "de" MyTXTFILE.Write "fghi" MyTXTFILE.Close Set MyTXTFILE = Nothing Set MyFSO = Nothing |
開いたテキストファイルにはすでに何か文字が入っていた、として アタマから書き込むなら 2 追加で書き込むなら 8 |
Dim MyFSO Dim MyTXTFILE Dim MyStr Set MyFSO = CreateObject("Scripting.FileSystemObject") Set MyTXTFILE = MyFSO.OpenTextFile("既存テキストファイルのフルパス", 1) MyStr = MyTXTFILE.ReadAll MyTXTFILE.Close Set MyTXTFILE = Nothing Set MyFSO = Nothing MsgBox MyStr |
あんまりデカいファイルで実験しないほうがいいです。 |
Option Explicit Dim MyFSO Dim MyTXTFILE Set MyFSO = CreateObject("Scripting.FileSystemObject") Set MyTXTFILE = MyFSO.CreateTextFile("test.vbs", True) MyTXTFILE.WriteLine "Dim MyFSO" MyTXTFILE.WriteLine "Dim MyTXTFILE" MyTXTFILE.WriteLine "Set MyFSO = CreateObject(" & """Scripting.FileSystemObject""" & ")" MyTXTFILE.WriteLine "Set MyTXTFILE = MyFSO.CreateTextFile(" & """testtxt.txt""" & ", True)" MyTXTFILE.WriteLine "MyTXTFILE.WriteLine " & """1行目""" MyTXTFILE.WriteLine "MyTXTFILE.WriteLine " & """2行目""" MyTXTFILE.WriteLine "MyTXTFILE.WriteLine " & """3行目""" MyTXTFILE.WriteLine "MyTXTFILE.Close" MyTXTFILE.WriteLine "Set MyTXTFILE = Nothing" MyTXTFILE.WriteLine "Set MyFSO = Nothing" MyTXTFILE.Close Set MyTXTFILE = Nothing Set MyFSO = Nothing
Option Explicit Dim MyFSO Dim MyTXTFILE Set MyFSO = CreateObject("Scripting.FileSystemObject") Set MyTXTFILE = MyFSO.CreateTextFile("test.htm", True) MyTXTFILE.WriteLine "<" & "html" & ">" MyTXTFILE.WriteLine "<" & "head" & ">" MyTXTFILE.WriteLine "<" & "meta http-equiv=" & """Content-Type""" & " content=" & """text/html; charset=shift_jis""" & ">" MyTXTFILE.WriteLine "<" & "META name=" & """robots""" & " content=" & """all""" & ">" MyTXTFILE.WriteLine "<" & "title" & ">" MyTXTFILE.WriteLine "無題" MyTXTFILE.WriteLine "<" & "/title" & ">" MyTXTFILE.WriteLine "<" & "/head" & ">" MyTXTFILE.WriteLine "<" & "body" & ">" MyTXTFILE.WriteLine "<" & "a href=" & """http://www.google.co.jp/""" & ">" & "戻る" & "<" & "/a" & ">" & "<" & "br" & ">" MyTXTFILE.WriteLine "<" & "/body" & ">" MyTXTFILE.WriteLine "<" & "/html" & ">" MyTXTFILE.Close Set MyTXTFILE = Nothing Set MyFSO = Nothing