Здесь другой подход, использующий robocopy
и его возможности фильтрации.Вот выдержка из File Selection Options
, отображаемая при вводе robocopy /?
в окне командной строки:
/MAX:n :: MAXimum file size - exclude files bigger than n bytes.
/MIN:n :: MINimum file size - exclude files smaller than n bytes.
/MAXAGE:n :: MAXimum file AGE - exclude files older than n days/date.
/MINAGE:n :: MINimum file AGE - exclude files newer than n days/date.
/MAXLAD:n :: MAXimum Last Access Date - exclude files unused since n.
/MINLAD:n :: MINimum Last Access Date - exclude files used since n.
(If n < 1900 then n = n days, else n = YYYYMMDD date).
Следовательно, можно применять опции /MIN
и /MAX
Вот.Поскольку мы не хотим копировать какие-либо файлы, используйте опцию /L
, чтобы вывести список всех элементов, которые будут скопированы без переключателя, а затем проанализируйте возвращенный список с помощью цикла for /F
, который содержит фактическую команду удаления del
в теле:
set "TARGETDIR=."
set "FILES=*.pdf"
for /F "tokens=*" %%F in ('
robocopy "%TARGETDIR%" "%TARGETDIR%" "%FILES%" ^
/L /IS /FP /NC /NS /NDL /NP /NJH /NJS ^
/MIN:0 /MAX:3071
') do (
ECHO del "%%F"
)
После проверки удалите из сценария верхний регистр ECHO
для фактического удаления файлов.
Кроме /MIN
,/MAX
и /L
, есть несколько других опций, определенных в командной строке robocopy
, большинство из которых заботятся о необходимом выводе, а именно простой список полных путей соответствующих файлов, без какой-либо дополнительной информации, такой как верхние и нижние колонтитулыили резюме.
Исходный и целевой каталоги установлены в нашем целевом каталоге.Конечно, обычно это не сработает (вы не можете копировать файлы на себя), но поскольку указано /L
, список файлов генерируется, но только если также указан ключ /IS
(это означает, что "те же файлы"быть рассмотренным).