Пакетный файл для удаления / удаления папок старше xx дней

Мне нужен командный файл для удаления папок старше 1 дня.

Папки содержат внутренние файлы, которые будут удалены вместе с папками.

Я пробовал 3 разных кода, но не удалял старые папки.

Путь, по которому находятся папки для удаления (путь имеет пробел):

D:\Programmi Installati\

Примеры имен папок (начинаются с log_)

log_1
log_10-12-2019
log_2008-10000
log_222222211111

Дней: 1

:: Code 1

@echo off
setlocal

set target="D:\Programmi Installati\"
set days=1

for /f "usebackq delims=" %%G in (
'forfiles /p "%target%" /c "cmd /c if /i @isdir == true echo @path" /d -%days% 2^>nul'
) do rd /s /q "%%~G"

pause
endlocal & exit /b


:: Code 2

forfiles /p "D:\Programmi Installati\" /d -1 /c "cmd /c if @isdir==true rd /s /q @path"



:: Code 3

FORFILES /P "D:\Programmi Installati\" /S /C "cmd /c IF @isdir == TRUE rmdir /S @path /Q" -D -1

Меня интересует исправление уже указанного кода или новый работающий код.


person placidomaio    schedule 13.01.2019    source источник
comment
Вам нужно лучше объяснить свою задачу. Вы хотите сохранить только каталоги, которые просуществовали один день или меньше? Или вы хотите удалить любой каталог, в котором нет файла, созданного за предыдущие 24 часа? Или что-то еще? ... Кроме того, вы должны объяснить среду, в которой был запущен каждый из 3 кодов, и что именно происходило в каждом случае.   -  person Compo    schedule 13.01.2019
comment
Мне интересно удалить папки, созданные более 24 часов, и мне нужно удалить старые папки с файлами внутри (нужно только проверить дату создания папки). Мне нужно использовать этот код, чтобы удалить папку со старым журналом. Я попробовал указанный код, но не удаляю никаких папок, у меня есть папка, старая 3-4 дня назад, и они не были удалены из выполнения летучей мыши.   -  person placidomaio    schedule 14.01.2019


Ответы (1)


Похоже, вы хотите проверить все каталоги журналов, начинающиеся только с log_, и удалить их, если они старше одного дня или, по крайней мере, имеют дату вчерашнего дня, если это так, я считаю, что это то, что вы хотите:

forfiles /P "D:\Programmi Installati" /M "log_*" /D -1 /C "cmd /c if @isdir==TRUE echo rd /s /q @path"

Примечание! Это будет отражать команду rd /s /q path только для того, чтобы вы могли убедиться, что она выполняет то, для чего вы рассчитываете. Если вас устраивает, удалите echo с конца строки в echo rd /s /q @path

person Gerhard    schedule 14.01.2019