Поиск файлов в windows, измененных после заданной даты с помощью командной строки

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

например:

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

5 ответов


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

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


на 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 дата для поиска "+" означает "больше" или "с"

Я был после того, как размер файлов изменился, и у меня не было 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%

у меня была та же проблема, поэтому я создал список с помощью 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

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

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