パラメタで指定されたディレクトリ配下にあるファイルの最終更新日時、ファイルファイルサイズ、ファイル名、ファイルバージョンをリスト表示し、結果ログに出力するVBScriptを作ってみました。コマンドプロンプトで
dir /s
って実行したのとほとんど同じですが、ファイルのバージョン情報も欲しいときは、使えるかもしれません。実行結果は、同じディレクトリのFileListCreator.logというファイルに結果が出力されます。
Option Explicit Call Main() Sub Main() Dim out Dim folderPath Dim fso Dim ts Dim isWS Dim ws ' 規定のスクリプトホストがWscriptなら、Cscriptに変更する isWS = IsWScript() If isWS Then Set ws = WScript.CreateObject( "WScript.Shell" ) Call ws.Run("cscript.exe /H:Cscript", 0, True) End If ' パラメタを取得 If Wscript.Arguments.Count = 0 Then folderPath = "." Else folderPath = Wscript.Arguments(0) End If Set fso = CreateObject("Scripting.FileSystemObject") ' サブフォルダに対して、再帰的に処理する out = ShowSubfolders(fso, fso.GetFolder(folderPath)) ' 検索結果をファイルに出力 Set ts = fso.CreateTextFile(folderPath & "\" & "FileListCreator.log") ts.WriteLine(out) ts.close ' 規定のスクリプトホストを元に戻す If isWS Then Call ws.Run("cscript.exe /H:Wscript", 0, True) End If End Sub ' 規定のスクリプトホストがWscriptかどうかを調べる Function IsWScript() Dim registoryValue Dim ws IsWScript = False ' レジストリの読み込み Set ws = WScript.CreateObject( "WScript.Shell" ) registoryValue = ws.RegRead("HKLM\SOFTWARE\Classes\VBSFile\Shell\Open\Command\") ' 規定のスクリプトホストがWscriptの場合 If InStr(1, registoryValue, "WSCRIPT", 1) > 0 Then IsWScript = True End If End Function ' サブティレクト内のファイル一覧を取得する Function ShowSubFolders(fso, folder) Dim file Dim returnValue Dim Subfolder Dim tmp returnValue = "" tmp = folder.DateLastModified & vbTab & "<DIR>" & vbTab & vbTab & folder.name WScript.Echo tmp returnValue = returnValue & tmp & vbNewLine For Each file in folder.Files tmp = file.DateLastModified & _ vbTab & _ vbTab & _ FormatNumber(file.Size, False, False, False, True) & _ vbTab & _ file.name & _ vbTab & _ fso.GetFileVersion(file.path) WScript.Echo tmp returnValue = returnValue & tmp & vbNewLine Next ' folder配下のフォルダを列挙する For Each Subfolder in folder.SubFolders ' 再帰呼び出し returnValue = returnValue & ShowSubFolders(fso, Subfolder) Next ShowSubFolders = returnValue End Function