Как скопировать все файлы, созданные между двумя датами, используя командную строку? - PullRequest
6 голосов
/ 24 января 2011

Я написал код в пакетном файле окна (например, getFiles.bat), который получает все файлы в выбранном диапазоне дат.э.

xcopy /S /D:01-10-2011  *.* C:\todaysFiles

Но я хочу получить все файлы в промежутке между двумя датами, включая С даты и К дате .
расширение файла .cmd или .bat

Ответы [ 4 ]

11 голосов
/ 24 января 2011

Если вы работаете в Vista / Win7 / WinServer2008, вы можете использовать robocopy примерно так:

robocopy c:\source c:\destination *.* /MAXAGE:20101231 /MINAGE:20111001

В XP я не уверен, есть ли встроенные решения, кроме использования Powershellи тому подобное.

2 голосов
/ 13 ноября 2017

Название этого вопроса немного вводит в заблуждение. Основываясь на примере xcopy опрашивающего, я полагаю, что спрашивающий хочет знать "Как скопировать все созданные файлы ...", а не как получить все файлы (которые я приравниваю с списком ).

Спрашивающий также заявляет, что "расширение файла - .cmd или .bat". Это может означать, что спрашивающий хочет копировать только файлы с этими расширениями, но я думаю, что спрашивающий хочет использовать пакетный сценарий.

Чтобы использовать следующее решение, откройте командную строку и chdir для папки, в которой находятся копируемые файлы. Затем введите команды, перечисленные ниже, изменив значения SET в зависимости от ситуации.

SET DESTINATION=C:\destination
SET DATE_FROM=01/01/2005
SET DATE_TO=01/01/2007
> nul forfiles /S /D +%DATE_FROM% /C "cmd /C if @isdir==FALSE 2> nul forfiles /M @file /D -%DATE_TO% && > con ( echo @path && copy /V @path %DESTINATION% )"

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

Значения SET могут быть жестко закодированы непосредственно в строку > nul forfiles..., то есть требуется только одна строка, но для ясности я использовал подстановку переменных.

Предостережение заключается в том, что оно основано на date modified (оригинальный вопрос, заданный для date created)

Благодарим aschipfl (https://stackoverflow.com/a/36585535/1754517) за вдохновение для моего ответа.

0 голосов
/ 13 сентября 2016

Вот пакет для просмотра файлов по дате создания по году.Легко изменить на приглашение cmd, удалив лишние процентные символы.

0 голосов
/ 09 июня 2016

Вы также можете использовать команду forfiles.Он может рекурсивно искать во всех подпапках /s файлы, созданные в выбранной корневой папке /p <Path>, выполнять команды для выбранных файлов /c "<Command>", применять маски для поиска /m <SearchMask>, в диапазоне дат /d [{+|-}][{<Date>|<Days>}]

подробнее здесь , и здесь

...