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

    KB2553154の更新プログラムをアンインストールするVBScript

    2014/12/11 追記:当記事で紹介しているのは更新プログラム…

  2. Excel

    Officeファイルから作成者などのプロパティを取得するVBScript

    下記記事でも書いていますが、xlsxやdocxといった、OOXML形式…

  3. VBScript

    Expression WebでVBScriptのコードを書いてみる。

    今日たまたま下記の記事を見つけました。10年近く前の古い記事です。…

  4. VBScript

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

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

  5. Windows関連

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

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

  6. Office関連

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

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

コメント

  • コメント (0)

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

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

Time limit is exhausted. Please reload CAPTCHA.

最近の記事

アーカイブ

RapidSSL_SEAL-90x50
PAGE TOP