Пакетный файл для удаления папок старше 10 дней в Windows 7 - PullRequest
24 голосов
/ 31 марта 2011

Я хочу создать командный файл, который должен удалить все подпапки папки, которые старше 10 дней, с использованием Windows 7

. Любая помощь будет принята.

Ответы [ 3 ]

45 голосов
/ 31 марта 2011

Адаптировано из этого ответа на очень похожий вопрос :

FORFILES /S /D -10 /C "cmd /c IF @isdir == TRUE rd /S /Q @path"

Эту команду следует запускать из папки d:\study.Он удалит все подпапки, которые старше 10 дней.

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *1001* после rd заставляет его удалять папки, даже если они не пусты.

Я предлагаю вампоместите указанную выше команду в файл .bat и сохраните ее как d:\study\cleanup.bat.

9 голосов
/ 11 мая 2012

FORFILES / S / D -10 / C "cmd / c IF @isdir == TRUE rd / S / Q @path"

Мне не удалось заставить предложение Blorgbeard работать, но я смог заставить его работать с RMDIR вместо RD:

FORFILES / p N: \ test / S / D -10 / C "cmd / c IF @isdir == TRUERMDIR / S / Q @path "

Поскольку RMDIR не будет удалять не пустые папки, поэтому я также использовал этот код для удаления файлов, которые были более 10 дней, а затем папкивозраст более 10 дней.

FOR / d %% K in ("n: \ test *") DO (

FOR / d %% J in ("%% K * ") DO (

FORFILES / P %% J / S / M . / D -10 / C" cmd / c del @file "

)

)

FORFILES / p N: \ test / S / D -10 / C "cmd / c IF @isdir == TRUE RMDIR / S / Q @path"

Я использовал этот код для очистки вложенных папок в папках в тесте (например, n: \ test \ abc \ 123 будет очищен, когда пуст, но n: \ test \ abc не будет очищен

0 голосов
/ 03 января 2012

Если вы хотите использовать его с параметром (т.е. удалить все подкаталоги в данном каталоге), поместите эти две строки в файл * .bat или * .cmd:

@echo off
for /f "delims=" %%d in ('dir %1 /s /b /ad ^| sort /r') do rd "%%d" 2>nul && echo rmdir %%d

и добавьте путь к сценарию в переменную окружения PATH. В этом случае вы можете вызвать пакетный файл из любого места (я думаю, что UNC-путь тоже должен работать).

Например: *. * 1006

YourBatchFileName c:\temp

(при необходимости вы можете использовать кавычки)

удалит все пустые подкаталоги в папке c: \ temp

YourBatchFileName

удалит все пустые подкаталоги в текущем каталоге.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...