Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Удалить файлы у которых атрибут времени доступа больше 7д. (http://forum.oszone.net/showthread.php?t=348919)

ryok 03-06-2021 07:31 2959423

Удалить файлы у которых атрибут времени доступа больше 7д.
 
Всех приветствую, нужно удалить файлы по атрибуту последнего доступа, если файлы не были открыты больше 7 дней то удалить их например из каталога C:\123\... и всех подкаталогов.
Я нашел тут похожую тему, но из-за небольшого опыта не смог переделать под свой случай.

DJ Mogarych 03-06-2021 09:37 2959433

Powershell:
Код:

dir C:\123 -File -Recurse |? lastaccesstime -lt (get-date).AddDays(-7) |del

ryok 03-06-2021 11:21 2959444

DJ Mogarych,
Спасибо вам большое, а не подскажите как через пакетный файл bat реализовать ?
Знаю, что там есть команда dir, у нее есть параметр /ta

alpap 03-06-2021 12:31 2959451

Цитата:

Цитата ryok
через пакетный файл 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


Iska 03-06-2021 17:41 2959487

alpap, не, /d у forfiles.exe — это дата/время последней модификации, а не доступа.

alpap 03-06-2021 19:10 2959490

Iska, это понятно, но я думаю ТС скорее всего и не знает точно что за дата ему требуется и не сильно надежная эта дата вообще как таковая: ссылка

ryok 03-06-2021 19:28 2959491

alpap,
Уважаемый Iska прав, мне нужно именно по последнему доступу считать, я в 1-ом сообщении это и написал.

megaloman 03-06-2021 19:34 2959492

ryok, Iska, alpap, похоже чистым CMD задача не решается.
Dir /B /A:-D /O:D /S /T:A
сортирует файлы по времени последнего доступа, но в переменную эту дату %%~tf не забирает, там получается дата модификации.
Можно, конечно, скомбинировать CMD и JS, но устроит ли это заказчика?

ryok 03-06-2021 19:45 2959493

megaloman,
а по каким именно причинам вы так посчитали, что время последнего доступа не передаётся ?
Если файл был изменен мной к примеру в 9:00, в него записался атрибут времени последней модификации 9:00 и так же у него обновился на 9:00 атрибут последнего доступа, оба параметра обычно равны друг другу, но не всегда.

megaloman 03-06-2021 19:54 2959494

ryok,
Цитата:

Цитата ryok
а по каким именно причинам вы так посчитали, что время последнего доступа не передаётся ? »

Я создал несколько файлов, у некоторых изменил атрибут - дата последнего доступа.
Проделал для них
Dir /A:-D /O:D /S /T:A "Box_In\*.*"
Убедился, что в дате отображается правильное время доступа.
Однако в Dir под For в переменную эту дату %%~tf не забирает, там получается дата модификации.

ryok 03-06-2021 20:15 2959495

Цитата:

Цитата megaloman
скомбинировать CMD и JS »

в приоритете конечно cmd.
Цитата:

Цитата megaloman
Однако в Dir под For в переменную эту дату %%~tf не забирает, там получается дата модификации »

Хм, странно..
видел в одном месте пробовали чуть по другому, вывод такого dir направить на findstr
Код:

dir file /ta|findstr /c:"file"

alpap 04-06-2021 03:01 2959497

Цитата:

Цитата ryok
вывод такого dir направить на findstr »

findstr тут выберет из того что ему дают, он не волшебник.


Время: 02:20.

Время: 02:20.
© OSzone.net 2001-