Подтвердить что ты не робот

Поиск по дате с использованием командной строки

Есть ли способ поиска файлов в каталоге на основе даты? Я хочу найти все файлы с созданной датой больше определенной даты, возможно ли это сделать с помощью команды dir?

4b9b3361

Ответ 1

dir сам по себе не может фильтровать по дате, но вы можете анализировать вывод dir с помощью команды for. Если в вашей стране dir печатает дату в формате YMD, вам нужно сравнить ее только с указанной датой. Если порядок деталей даты отличается, вам нужно использовать другую команду for для анализа даты и изменения ее в YMD. Это отобразит список файлов, измененных после 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

EDIT: Существует даже лучший подход, который позволяет избежать синтаксического анализа вывода dir, а также позволяет искать по времени не только по дате:

@Echo Off

for /r %%A in (*) do (
  if "%%~tA" GTR "2012-02-05 00:00" echo %%~tA %%A
)

Ответ 2

Только что открыла команду forfiles.

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

Перечислит все файлы журналов, измененные более семи дней назад, во всех подкаталогах, хотя он, похоже, не смотрит дату создания. Он поддерживает указание конкретной даты.

Подробнее см. forfiles /?.

Ответ 3

Ну, вы не можете догадаться, насколько я знаю, но такое мнение будет работать, но все же бесполезно, если у вас нет короткого диапазона дат;)

for /R %a in (01 02 03 04 05) do dir | find "02/%a/2012"

Ответ 4

более простой способ для меня - это что-то вроде

dir /s *.xlsx | find "07/14/2016"

Ответ 5

Это легко сделать с 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 для документации.