Windowsのファイルの最終変更日を取得するための高速組み込みコマンド?


1

Windows上のファイルの束の最終変更日を取得しようとしています。GNUシステムでは、のようなものを使用できますstat -c %Y

wmicコマンドについては知っていますが、問題はそれが非常に遅いことです。私のシステムでwmic datafile where Name="..." get LastModified /valueは、MSYS2シェルでGNU statのポートを使用するよりも、コマンドの実行が約4〜7倍遅くなります。

私の目的のために、Windows自体またはVisual Studio開発ツールのいずれかに高速で組み込みの代替手段が必要です。出力形式は、自分で手動で解析できるため、あまり気にしません。

そのようなものが存在するかどうか誰もが知っていますか?


stat(確実に"stat.exe")のWindowsポートをほぼ確実に見つけることができます。そうでない場合、記述するのはCの数行だけです。
AFH

@AFH問題は、WindowsまたはVS開発ツールのいずれかに組み込まれたソリューションが必要なことです。検索しましたが、見つけたのはwmicだけです。
AlexRamallo

VSがある場合は、プログラムを自分で作成します(シンボリックリンクの処理方法に応じて、stat()またはを呼び出しlstat()ます)。または、PowerShellではおそらく簡単ですが、最小限以上使用したことはありません。
AFH

「組み込み」と言うときは、すでに利用可能なものが必要であることを意味します。もちろん自分で書くこともできますが、私がやっていることにとっては適切な解決策ではありません。VS開発ツールが最低限インストールされている多数のWindows PCに展開する必要があるスクリプトを書いています。実行可能プログラム、またはさらに悪いことに、ビルドする必要のあるソースコードをバンドルしても、特定の状況では機能しません。Powershellは私が以前は考えもしなかったものでしたので、試してみました。残念ながら、実際はwmicコマンドよりもはるかに遅いです。
AlexRamallo

ローカルセキュリティまたはウイルス対策ポリシーのコンテキストで難しい場合を除き、スクリプトで実行可能ファイルを配布してはならない理由はわかりません。PCがWindows 10上にある場合、Linux on Windowsサブシステムはすでにインストールされていstatます。で起動できbash -cますが、Windowsファイル名ではなくLinuxを使用する必要があります。
AFH

回答:


3

フィールドごとに出力を解析できる場合、WindowコマンドラインDIRがジョブを実行する必要があります。必要に応じて、出力をファイルにパイプします。

たとえば、dir / o:d / t:wは、最後に書き込まれた(つまり、変更された)フィールド[/ t:w]を使用して、日付[/ o:d]でファイルを順序付け、次を生成します。

C:\ Intel \ Logsのディレクトリ

07/06/2016 10:28 PM ..

07/06/2016 10:28 PM 0 IntelCPHS.log

05/13/2017 10:01 PM 767,814 IntelGFX.log

10/17/2017 10:54 PM 51,608 IntelGFXCoin.log

秒まで時間が必要な場合は、次を試してください:

forfiles / c "cmd / c echo @file @ftime"

dir /?と入力します 特定の属性、出力形式などのファイルを表示するためのオプションを表示するには


すばらしい-の@...オプションについて知りませんでしたForFilescmdエコーを行うためだけに新しいコピーをスケジュールする必要があるのは残念です。Linux echoや他のいくつかの内部コマンドには、これを回避するための外部バイナリもありますが、同等の機能を実行する標準のWindowsコマンドは知りません。
AFH
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.