Найти файлы в Windows, измененные после указанной даты, используя командную строку

Мне нужно найти файл на моем диске, модифицированный после указанной даты, используя командную строку.

Например:

   dir /S /B WHERE modified date > 12/07/2013

Ответ 1

Вы можете использовать PowerShell для этого, попробуйте:

Get-ChildItem -Recurse | Where-Object { $_.LastWriteTime -ge "12/27/2016" }

Ответ 2

Команда forfiles работала для меня в Windows 7. Статья находится здесь:

http://www.windows-commandline.com/find-files-based-on-modified-time/

Microsoft Technet doc: http://technet.microsoft.com/en-us/library/cc753551.aspx

Для примера выше:

forfiles /P <dir> /S /D +12/07/2013
  • /P Путь к поиску
  • /S Записаться в подкаталоги
  • /D Дата для поиска, "+" означает "больше чем" или "начиная с"

Ответ 3

Я был после изменения размера файлов и не имел Powershell, я использовал следующее, но ключ появился из другого сообщения

http://www.scotiasystems.com/blog/it-hints-and-tips/quick-way-to-find-recently-changed-files-in-windows и Только команда Windows для размера файла?

set Target=E:\userdata
rem Date format is M-D-YYYY
set date=12-13-2013
set Filelist=d:\temp\filelist.txt
set Sizelist=d:\temp\sizelist%date%.csv

echo Target is %Target%
echo Start date is %date%
echo file list is %Filelist%
echo Sizelist is %sizelist%

Xcopy %Target% /D:%date% /L /S  > %Filelist%
echo FileSize (bytes), FileName > %sizelist%

For /f "tokens=1 delims=;" %%j in (%Filelist%) do (
                call :Size "%%j"
                )    
Goto :EOF

:Size
@echo off
echo %~z1, %1 >> %sizelist%

Ответ 4

У меня была такая же проблема, поэтому я создал список с использованием XCOPY и измененной даты, которую я искал, а затем использовал цикл for для перемещения по списку и добавления информации о дате/времени, которая мне нужна для каждого файла, войти.

xcopy X:\file_*.log X:\temp /D:07-17-2014 /L /Y > X:\files.txt
for /f "tokens=* delims=" %%a in (X:\files.txt ) do (
    @echo %%~ta %%a >> X:\files.log
)

В результате получилось что-то вроде следующего, что я и хотел.

X:\>()
07/17/2014 09:41 AM X:\file_201407170600.log

X:\>()
07/17/2014 09:41 AM X:\file_201407170615.log

X:\>()
07/17/2014 09:23 AM X:\file_201407170630.log

Ответ 5

Если вы решите использовать Power Shell, это также будет работать с диапазонами времени и даты:

Get-ChildItem -Recurse | Where-Object {($_.LastWriteTime -ge "04/15/2018 20:00:00") -and ($
_.LastWriteTime -lt "04/15/2018 21:00:00")}

Чтобы использовать программную дату или время, не зависящее от локали:

Get-ChildItem -Recurse | Where-Object {($_.LastWriteTime -ge (new-object System.DateTime 2018, 1, 10, 12, 30, 00)) -and ($_.LastWriteTime -lt (new-object System.DateTime 2018, 1, 14, 12, 15, 59))}

Где дата и время вводятся в порядке возрастания времени:

Год, месяц, день, час, минута, секунда

Ответ 6

Вы можете искать файлы, измененные после указанной даты, используя XCOPY, как в этом примере, ища файлы с последнего дня 2018 года:

xcopy *.* c:\temp\*.* /D:12-31-2018 /L /S

В этом примере вы находитесь в каталоге, где начинается ваш поиск.

c:\temp *. * является только синтаксическим реквизитом, там ничего не будет скопировано.

/D: 12-31-2018 указывает дату изменения файлов, которую вы ищете, включая указанную дату.

/L показывает имена файлов, включая диск и путь, а также заставляет xcopy не копировать файлы.

/S поиск в подкаталогах.