Показать полную графическую версию : Удалить файлы у которых атрибут времени доступа больше 7д.
Всех приветствую, нужно удалить файлы по атрибуту последнего доступа, если файлы не были открыты больше 7 дней то удалить их например из каталога C:\123\... и всех подкаталогов.
Я нашел тут похожую тему (http://forum.oszone.net/thread-336829.html), но из-за небольшого опыта не смог переделать под свой случай.
DJ Mogarych
03-06-2021, 09:37
Powershell:
dir C:\123 -File -Recurse |? lastaccesstime -lt (get-date).AddDays(-7) |del
DJ Mogarych,
Спасибо вам большое, а не подскажите как через пакетный файл bat реализовать ?
Знаю, что там есть команда dir, у нее есть параметр /ta
через пакетный файл bat реализовать ? »
если именно запустить в окне cmd, то
@powershell -noL -noP -ex Bypass "C:\My.ps1"
а если код нужен bat
@echo off
cd /d "C:\papka" && >nul 2>&1 forfiles /d -7 /s /c "cmd /c del /s /q @file"
pause
alpap, не, /d у forfiles.exe — это дата/время последней модификации, а не доступа.
Iska, это понятно, но я думаю ТС скорее всего и не знает точно что за дата ему требуется и не сильно надежная эта дата вообще как таковая: ссылка (https://docs.microsoft.com/ru-ru/windows/win32/api/fileapi/ns-fileapi-win32_file_attribute_data?redirectedfrom=MSDN)
alpap,
Уважаемый Iska прав, мне нужно именно по последнему доступу считать, я в 1-ом сообщении это и написал.
megaloman
03-06-2021, 19:34
ryok, Iska, alpap, похоже чистым CMD задача не решается.
Dir /B /A:-D /O:D /S /T:A
сортирует файлы по времени последнего доступа, но в переменную эту дату %%~tf не забирает, там получается дата модификации.
Можно, конечно, скомбинировать CMD и JS, но устроит ли это заказчика?
megaloman,
а по каким именно причинам вы так посчитали, что время последнего доступа не передаётся ?
Если файл был изменен мной к примеру в 9:00, в него записался атрибут времени последней модификации 9:00 и так же у него обновился на 9:00 атрибут последнего доступа, оба параметра обычно равны друг другу, но не всегда.
megaloman
03-06-2021, 19:54
ryok, а по каким именно причинам вы так посчитали, что время последнего доступа не передаётся ? » Я создал несколько файлов, у некоторых изменил атрибут - дата последнего доступа.
Проделал для них
Dir /A:-D /O:D /S /T:A "Box_In\*.*"
Убедился, что в дате отображается правильное время доступа.
Однако в Dir под For в переменную эту дату %%~tf не забирает, там получается дата модификации.
скомбинировать CMD и JS »
в приоритете конечно cmd.
Однако в Dir под For в переменную эту дату %%~tf не забирает, там получается дата модификации »
Хм, странно..
видел в одном месте пробовали чуть по другому, вывод такого dir направить на findstr
dir file /ta|findstr /c:"file"
вывод такого dir направить на findstr »
findstr тут выберет из того что ему дают, он не волшебник.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.