Войти

Показать полную графическую версию : [решено] Не пишется лог-файл по forfiles. Ищу помощи и совета.


blacks2
28-10-2020, 08:30
Здравствуйте.
Прошу помощи и совета.

Нашел решение для удаление старых файлов и подпапок
Одно из, вроде работает 0=)

@ECHO OFF
chcp 866
SET BKUP_DelPath=e:\backup
SET BKUP_Max_Days=7

forfiles /S /P "%BKUP_DelPath%" /M *_base /D -%BKUP_Max_Days% /C "cmd /C if @isdir == TRUE (rd /S /Q @path) else (del /F /A @path)" >> "e:\Deleted.log"

echo pause
PAUSE >nul


Но не пишет в лог что удалено.

Пожалуйста помогите правкой скрипта, чтоб писал в лог.

Заранее большое спасибо!




PS
Отброшенный вариант:
Пишет в лог на удаление файлов,
НЕ пишет в лог удаленные папки.

ГЛАВНОЕ НО: после удаления файлов,
дата папки (из которой удалены файлы) меняется на текущую
и 2я строка уже не может удалить саму папку

forfiles /p "%BKUP_DelPath%" /s /m * /D -%BKUP_Max_Days% /C "cmd /c del /q /s @path" >> e:\Deleted.log
forfiles /p %BKUP_DelPath% /m *_base /D -%BKUP_Max_Days% /C "cmd /c IF @isdir == TRUE rd /S /Q @path" >> e:\Deleted.log

megaloman
28-10-2020, 09:50
blacks2, Вы удаляете старые файлы в папке. А зачем Вы удаляете саму папку? Вы предполагаете, что после удаления старых файлов она пустая? Тогда просто удалите эту папку командой RD ИМЯ-ПАПКИ без ключей без привязки к дате. Непустая папка не удалится. Как удалить пустые папки, на форуме не раз обсуждалось. (http://forum.oszone.net/post-2926778-6.html) FOR /F "usebackq delims=" %%d IN (`2^>nul Dir "%BKUP_DelPath%" /S /B /A:D ^|Sort /R`) DO 2>nul Rd "%%d"&&>>"e:\Deleted.log" Echo "%%d"

blacks2
28-10-2020, 16:35
А зачем Вы удаляете саму папку? Вы предполагаете, что после удаления старых файлов она пустая? »

"А что, так можно было!?"
... даже не подумал. Благодарю Вас megaloman



PS
Лог:

Ваш пример
FOR /F "usebackq delims=" %%d IN (`2^>nul Dir "%BKUP_DelPath%" /S /B /A:D ^|Sort /R`) DO 2>nul Rd "%%d"

Также найденный на данном форуме
For /F "usebackq delims=" %%A In (`Dir "%BKUP_DelPath%" /B /S /A:D 2^>nul^|Sort /R`) Do RD "%%A" 2>nul &&Echo:Папка %%A удаленa


Пробовал добавлять/заменять (знания по CMD не большие)
>> е:\Deleted.log

- не получилось, видимое что-то делаю не так.


Если есть возможность, подскажите пожалуйста как сделать вывод результата в лог?

blacks2
29-10-2020, 06:37
blacks2, для Вас я под спойлером в своем сообщении сделал уже, не ленитесь, загляните, там нарисован вывод в лог в самом конце строки »

Багодарствую! Работает!
А спойлер то и не заметил вначале. Ссылки смотрел а спойлер проглядел :cool:



P.S.
Итог (если кому-то понадобиться):
SET BKUP_DelPath=e:\backup_dir
SET BKUP_DelLogs=e:\backup_dir\Deleted.log
SET BKUP_Max_Days=7

forfiles /p "%BKUP_DelPath%" /s /m * /D -%BKUP_Max_Days% /C "cmd /c del /q /s @path" >> %BKUP_DelLogs%
FOR /F "usebackq delims=" %%d IN (`2^>nul Dir "%BKUP_DelPath%" /S /B /A:D ^|Sort /R`) DO 2>nul Rd "%%d"&&>>"%BKUP_DelLogs%" Echo "%%d"

echo pause and end
PAUSE >nul




© OSzone.net 2001-2012