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. Office関連

    Officeアプリケーションのバージョン情報ダイアログから情報を取得するVBScript

    自分の手間を減らすためのスクリプトシリーズ、今回はWordやExcel…

  2. Office関連

    「2014年12月のWindows Update以降コマンドボタンが使えなくなった」トラブルへのFi…

    当ブログでも「KB2553154の更新プログラムをアンインストールする…

  3. VBScript

    文字コードを指定してURLエンコードを行う

    本題に入る前にまずは下記エントリーをご覧ください。・64ビット…

  4. Windows関連

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

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

  5. VBScript

    【Illustrator】指定したPDFプリセットでAIファイルをPDFに一括変換するVBScrip…

    前回の記事で、Illustratorに登録されたPDFプリセットを列挙…

コメント

  • コメント (0)

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

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

Time limit is exhausted. Please reload CAPTCHA.

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

Translate

最近の記事

アーカイブ

PAGE TOP