VBScript

指定したフォルダ内で最も更新日時の新しいファイルのパスを取得するVBScript

大量のログファイルから最新のファイルのみを取得する必要があったので、簡単なスクリプトを書いてみました。

Option Explicit

Dim Args

Set Args = WScript.Arguments
If Args.Count < 1 Then WScript.Quit
If CreateObject("Scripting.FileSystemObject").FolderExists(Args(0)) = False Then WScript.Quit
WScript.Echo GetRecentlyModifiedFile(Args(0))

Private Function GetRecentlyModifiedFile(ByVal FolderPath)
'指定したフォルダ内で最も更新日時の新しいファイルのパスを取得
  Dim fs, f
  Dim d
  Dim ret
  
  With CreateObject("Scripting.FileSystemObject")
    Set fs = .GetFolder(FolderPath).Files
    If fs.Count > 0 Then
      For Each f In fs
        If d < f.DateLastModified Then
          ret = f.Path
          d = f.DateLastModified
        End If
      Next
    End If
  End With
  GetRecentlyModifiedFile = ret
End Function

引数として渡されたフォルダ内のファイルの更新日時を順番に見ていって、最も新しいファイルのパスを返すだけの簡単なコードです。

ついでに、フォルダ内のファイルの更新日時を一覧表示するスクリプトも書いてみました。
こちらはレコードセットを使用する形に変更してあります。

Option Explicit

Dim Args

Set Args = WScript.Arguments
If Args.Count < 1 Then WScript.Quit
If CreateObject("Scripting.FileSystemObject").FolderExists(Args(0)) = False Then WScript.Quit
ListRecentlyModifiedFiles Args(0)

Private Sub ListRecentlyModifiedFiles(ByVal FolderPath)
'指定したフォルダ内のファイルを更新日時順で列挙
  Dim rs, fs, f
  Const adWChar = 130
  Const adDBTimeStamp = 135
  
  With CreateObject("Scripting.FileSystemObject")
    Set fs = .GetFolder(FolderPath).Files
    If fs.Count > 0 Then
      'レコードセット設定
      Set rs = CreateObject("ADODB.Recordset")
      rs.Fields.Append "ModifyDate", adDBTimeStamp, 255
      rs.Fields.Append "Path", adWChar, 255
      rs.Open
      
      For Each f In fs
        rs.AddNew
        rs.Fields("ModifyDate").Value = f.DateLastModified
        rs.Fields("Path").Value = f.Path
        rs.Update
      Next
      
      rs.Sort = "ModifyDate DESC" '更新日時で降順ソート
      rs.MoveFirst
      
      Do Until rs.EOF
        WScript.Echo rs.Fields("ModifyDate").Value & vbTab & rs.Fields("Path").Value
        rs.MoveNext
      Loop
      
      rs.Close
    End If
  End With
End Sub

ここまで書いておいて何ですが、dirコマンド(dir /O:-D)で似たようなことができるので、わざわざスクリプトを書く必要はなかったですね💦

関連記事

  1. VBScript

    GUIDを作成するVBScript

    Office アドインを作成するのに必要(マニフェストのId要素)なG…

  2. VBScript

    ファイル選択ダイアログ

    ファイル選択ダイアログを表示するVBScriptをまとめてみま…

  3. Office関連

    古い形式のWordテンプレートを新しい形式に一括変換するVBScript

    古い形式のWordテンプレート(dot)を新しい形式(dotx,dot…

  4. VBScript

    指定したフォルダ内のemlファイルの情報をリスト化するVBScript

    emlファイルから件名や本文、宛先や送信日時といった各種情報を取得して…

  5. Windows関連

    Windows 8を従来のスタイルに変更するスクリプト

    2012/3/2 追記:下記情報はWindows Develope…

  6. VBScript

    Windows Updateの更新履歴をCSV(UTF-8)で保存するVBScript

    以前書いたスクリプトが出てきました。Windows Updateの…

コメント

  • コメント (0)

  • トラックバックは利用できません。

  1. この記事へのコメントはありません。

Time limit is exhausted. Please reload CAPTCHA.

最近の記事

アーカイブ

RapidSSL_SEAL-90x50
PAGE TOP