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

    右クリックメニューからフォルダを管理者権限で開く(コマンド プロンプト)

    フォルダをShiftキーを押しながら右クリックすると、「コマンド ウィ…

  2. Windows関連

    ダウンロードフォルダーのパスを取得するVBScript

    ダウンロードフォルダーのパスを取得する必要があったので、過去に書いた記…

  3. Office関連

    ヘッドレス ChromeとSeleniumBasicでWebページ全体のスクリーンショットを撮る方法…

    先日、ヘッドレス ChromeでWebページ全体のスクリーンショットを…

  4. VBScript

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

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

  5. VBScript

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

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

  6. Office関連

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

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

コメント

  • コメント (0)

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

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

Time limit is exhausted. Please reload CAPTCHA.

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

Translate

最近の記事

アーカイブ

PAGE TOP