mattintosh note

どこかのエンジニアモドキの備忘録

コマンドプロンプトでファイルの作成日などを秒まで表示したい

Explorer の詳細表示で確認できるファイルの日付は分までしか表示しない。また、秒によって +1 分されることもあるので秒までサクッと確認できないものかどうか調べてみた。

が、どうもバッチスクリプトだけでは無理っぽい。

forfiles というコマンドも存在するけどうちの Windows XP には入っていないし、リソースキットっていうのを入れなきゃいけないものなのかもわからない(MicrosoftFTP サーバからコマンド単体をダウンロードしてくることはできるけど)。

とりあえず入れてみた 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/Linuxfind があればこんなの一行で済んじゃうんですけどねー。printf みたいな関数も無いから LeftRight でなんとかしろとのこと。Windows さん面倒過ぎでしょ…。

日本の企業は Windows に依存し過ぎな気がしますねぇ…。Unix/Linux が職場に1台でもあったらこういった作業が格段に楽になると思うんですけど。GnuWin32 のツールとか Python とか Ruby が欲しくなります。