Explorer の詳細表示で確認できるファイルの日付は分までしか表示しない。また、秒によって +1 分されることもあるので秒までサクッと確認できないものかどうか調べてみた。
が、どうもバッチスクリプトだけでは無理っぽい。
forfiles
というコマンドも存在するけどうちの Windows XP には入っていないし、リソースキットっていうのを入れなきゃいけないものなのかもわからない(Microsoft の FTP サーバからコマンド単体をダウンロードしてくることはできるけど)。
とりあえず入れてみた forfiles
コマンドを試してみたところ確かに秒は表示するのだけどコロンも入らなければゼロパッドもしない。ファイル検索には向いているけど stat
コマンドみたいなのは無理そうだ。
というわけで VBScript を使うことになった。とりあえずユーザプロファイルディレクトリ以下を再帰的に調べてファイルの作成日時と更新日時を表示してみるか〜という感じでやってみる。以下、VBS 入門2日目の人が書いたものなのであまりあてにならない。
Option Explicit Dim FSO : Set FSO = CreateObject("Scripting.FileSystemObject") Dim WSH : Set WSH = CreateObject("WScript.Shell") Dim strTargetFolder strTargetFolder = WSH.ExpandEnvironmentStrings("%USERPROFILE%") ShowSubFolders FSO.GetFolder(strTargetFolder) Sub ShowSubFolders(folderspec) Dim objSubFolder Dim objFolder Dim f Dim fctime Dim fmtime For Each objSubFolder in folderspec.SubFolders Set objFolder = FSO.GetFolder(objSubFolder.Path) WScript.Echo objFolder For Each f in objFolder.Files fctime = f.DateCreated fmtime = f.DateLastModified WScript.Echo _ Space(2) & f.Name & vbCrLf & _ Space(4) & "作成日時: " & _ Year(fctime) & "/" & _ Right("0" & Month(fctime), 2) & "/" & _ Right("0" & Day(fctime), 2) & " " & _ Right("0" & Hour(fctime), 2) & ":" & _ Right("0" & Minute(fctime), 2) & ":" & _ Right("0" & Second(fctime), 2) & vbCrLf & _ Space(4) & "更新日時: " & _ Year(fmtime) & "/" & _ Right("0" & Month(fmtime), 2) & "/" & _ Right("0" & Day(fmtime), 2) & " " & _ Right("0" & Hour(fmtime), 2) & ":" & _ Right("0" & Minute(fmtime), 2) & ":" & _ Right("0" & Second(fmtime), 2) & vbCrLf Next ShowSubFolders objSubFolder Next End Sub
Unix/Linux の find
があればこんなの一行で済んじゃうんですけどねー。printf
みたいな関数も無いから Left
と Right
でなんとかしろとのこと。Windows さん面倒過ぎでしょ…。
日本の企業は Windows に依存し過ぎな気がしますねぇ…。Unix/Linux が職場に1台でもあったらこういった作業が格段に楽になると思うんですけど。GnuWin32 のツールとか Python とか Ruby が欲しくなります。