• 締切済み

VBSを使ったファイル検索

お世話になっております。 VBSを使い、特定のフォルダに対して、タイムスタンプ(最終更新日)が今日と昨日のファイルを抽出したいと思っています。 Dim T,Y T = Date () Y = DateAdd("d",-1,Today) とすれば、今日と昨日の日付を得られますが、 この変数 TとY を使って、タイムスタンプでファイルを抽出、ソートすることはできるのでしょうか? サンプルコードや参考になるサイトがあれば教えていただきたいと思っています。 初心者な質問で恐縮ですが、知恵を貸して頂けないでしょうか。 よろしくお願いします。

みんなの回答

  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.2

ソートの必要が無ければ単純なのですが、更新日順でソートする場合は面倒です。 下記を適当なVBSファイルで保存してお試しを。 デスクトップに、a.csv ファイルが出来ます。 ※特定のフォルダは、そちらで指定するのをお忘れなく。 option explicit Dim f, fd, fs, ws,OutTxt Dim rs Const ForWriting = 2 ,ForAppending = 8 Set fs = CreateObject("scripting.filesystemobject") Set fd = fs.GetFolder("e:\tmp\") '←☆☆ここでフォルダを指定してください☆☆ set ws = CreateObject("wscript.shell") Set rs = CreateObject("adodb.recordset") 'レコードセットの入れ物作成 With rs .LockType = 3 'adLockOptimistic With .Fields .append "F1", 200, 255 'adVarChar .append "F2", 200, 255 'adVarChar .append "F3", 7 'adDate End With End With 'レコードセットにデータを格納 rs.Open For Each f In fd.Files If f.datelastmodified > DateAdd("d", -1, Date) Then rs.addnew rs.Fields("F1") = f.Name rs.Fields("F2") = f.Path rs.Fields("F3") = f.DateLastModified rs.Update End If Next '出力ファイルに昇順で(F3 ASC)書き出し rs.Sort = "F3 ASC" Set OutTxt = fs.OpenTextFile(ws.specialfolders("desktop") & "\a.csv", ForWriting , True) Do Until rs.Eof OutTxt.WriteLine _ chr(34) & rs.Fields("F1") & chr(34) _ & "," & chr(34) & rs.Fields("F2") & chr(34) _ & "," & rs.Fields("F3") rs.MoveNext Loop rs.Close Set rs = Nothing OutTxt.Close msgbox "おしまい"

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.1

>特定のフォルダのファィル名とタイムスタンプは以下で取得できますが Option Explicit Dim FSO, objFolder, f Dim myPath myPath = "C:\・・・・" Set FSO = WScript.CreateObject("Scripting.FileSystemObject") Set objFolder = FSO.GetFolder(myPath) For Each f In objFolder.Files   WScript.Echo f.Name & vbCrLf & FSO.GetFile(myPath & f.Name).DateLastModified Next

関連するQ&A