日付に基づいてディレクトリ内のファイルを検索する方法はありますか?特定の日付よりも大きい作成日を持つすべてのファイルを検索したいのですが、dir
コマンドで実行できますか?
dir
自体は日付でフィルタリングできませんが、dir
コマンドを使用してfor
の出力を解析できます。お住まいの国でdir
がYMD形式で日付を出力する場合、指定された日付と比較するだけです。日付部分の順序が異なる場合は、別のfor
コマンドを使用して日付を解析し、YMDに変更する必要があります。これにより、2月5日以降に変更されたファイルのリストが表示されます。
@Echo Off
for /f "usebackq tokens=1,4 skip=5" %%A in (`dir /-c`) do (
if %%A GTR 2012-02-05 echo %%A %%B
)
if
は標準の文字列比較を行うため、要約行が比較に合格した場合、最後に追加の行を取得できます。これを避けるには、if %%A GTR 2012-02-05 if exist %%B echo %%A %%B
を使用できます
編集:dir
出力の解析を回避し、日付だけでなく時間で検索できるようにするさらに優れたアプローチがあります。
@Echo Off
for /r %%A in (*) do (
if "%%~tA" GTR "2012-02-05 00:00" echo %%~tA %%A
)
forfiles
コマンドを発見しました。
forfiles /s /m *.log /d -7 /c "cmd /c echo @path"
7日以上前に変更されたすべてのログファイルがすべてのサブディレクトリに一覧表示されますが、作成日は表示されません。特定の日付の指定をサポートします。
見る forfiles /?
詳細については。
まあ、あなたは私の知る限りではできませんが、この種の思考は機能しますが、短い日付範囲がない限り、まだ本当に役に立ちません;)
for /R %a in (01 02 03 04 05) do dir | find "02/%a/2012"
私にとって簡単な方法は次のようなものです
dir /s *.xlsx | find "07/14/2016"
これはPowerShellで簡単に行えます。あなたの質問はcmdに関するものでしたが、PSはwindows 7以降に含まれています。 XPおよびVistaにもインストールできます。
Get-ChildItem
コマンド(別名dir
)を使用して、すべてのファイルを取得します。出力をWhere-Object
コマンド(別名?
)にパイプして、日付が特定の日付(-gt
)よりも大きいファイルを返します。
Powershell 2.0(Windows 7のデフォルト)の場合、スクリプトブロックを使用する必要があります。
dir -file | ? {$_.LastWriteTimeUtc -gt ([datetime]"2013-05-01")}
Powershell 3.0(Windows 8のデフォルト)以降では、代わりにこの単純な構文を使用できます。
dir -file | ? LastWriteTimeUtc -gt ([datetime]"2013-05-01")
dir -file
コマンドは、System.IO.FileInfo
オブジェクトのコレクションを返します。このファイルオブジェクトには、複雑なフィルタリングに使用できる多くのプロパティがあります(ファイルサイズ、作成日など)。ドキュメントについては [〜#〜] msdn [〜#〜] を参照してください。