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