17

日付に基づいてディレクトリ内のファイルを検索する方法はありますか?作成日が特定の日付よりも大きいすべてのファイルを検索したいのですが、コマンドで検索できますdirか?

4

5 に答える 5

41

forfilesコマンドを発見しました。

forfiles /s /m *.log /d -7 /c "cmd /c echo @path"

作成日を確認していないように見えますが、すべてのサブディレクトリで、7日以上経過して変更されたすべてのログファイルが一覧表示されます。特定の日付の指定をサポートしています。

詳細については、を参照forfiles /?してください。

于 2013-05-29T17:08:48.777 に答える
6

dirそれ自体では日付でフィルタリングすることはできませんが、dirusingforコマンドの出力を解析することはできます。お住まいの国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
)
于 2012-02-11T16:30:11.733 に答える
6

私にとってより簡単な方法は次のようなものです

dir /s *.xlsx | find "07/14/2016"
于 2016-07-14T20:31:45.813 に答える
3

私の知る限りではできませんが、この種の考え方は機能しますが、日付範囲が短い場合を除いて、実際には役に立ちません;)

for /R %a in (01 02 03 04 05) do dir | find "02/%a/2012"
于 2012-02-10T21:41:20.843 に答える
1

これは、PowerShellで簡単に実行できます。あなたの質問はcmdに関するものだったと思いますが、PSはWindows7以降に含まれています。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を参照してください。

于 2013-12-08T16:45:51.277 に答える