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)で似たようなことができるので、わざわざスクリプトを書く必要はなかったですね💦

ジャパンバードフェスティバル2018に行ってきたよ。前のページ

VBAの力量をはかる3つの質問次のページ

関連記事

  1. VBScript

    Acrobatを使ってPDFファイルを結合するVBScript

    「Acrobat PDF 結合 コマンドライン」といったキーワード検索…

  2. VBScript

    OWSPostDataオブジェクトを使って文字列をエンコードするVBS

    OWSPostDataオブジェクトのURLEncodeメソッドで文字列…

  3. VBScript

    動画回転用簡易FFmpegフロントエンド

    アーケードゲームのプレイを録画した際、機器によっては録画した動画の向き…

  4. VBScript

    Windowsのバージョン情報を取得する

    小ネタです。verコマンドを利用してWindowsのバージ…

  5. VBScript

    Internet Explorerのお気に入りを列挙するVBScript

    Internet Explorerのお気に入りにどの位のインターネット…

  6. VBScript

    Microsoft Edgeのバージョン情報をクリップボードにコピーするVBScript

    前回の記事に引き続き、自分の手間を減らすためのスクリプト、今回はMic…

コメント

  • コメント (0)

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

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

Time limit is exhausted. Please reload CAPTCHA.

※本ページはプロモーションが含まれています。

Translate

最近の記事

アーカイブ

PAGE TOP