CMD/BAT - [решено] Не пишется лог-файл по forfiles. Ищу помощи и совета.

Ответить
Аватара пользователя
blacks2

CMD/BAT - [решено] Не пишется лог-файл по forfiles. Ищу помощи и совета.

Сообщение blacks2 »

Здравствуйте.

Прошу помощи и совета.



Нашел решение для удаление старых файлов и подпапок

Одно из, вроде работает 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я строка уже не может удалить саму папку[/i]



Код:

Код: Выделить всё

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

Re: CMD/BAT - [решено] Не пишется лог-файл по forfiles. Ищу помощи и совета.

Сообщение megaloman »

blacks2, Вы удаляете старые файлы в папке. А зачем Вы удаляете саму папку? Вы предполагаете, что после удаления старых файлов она пустая? Тогда просто удалите эту папку командой RD ИМЯ-ПАПКИ без ключей без привязки к дате. Непустая папка не удалится.
CMD/BAT - [решено] Бесконечный цикл, если в имени папки есть знак процента



С лог-файлом

[spoiler]Код:
[/spoiler]

Код: Выделить всё

	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

Re: CMD/BAT - [решено] Не пишется лог-файл по forfiles. Ищу помощи и совета.

Сообщение blacks2 »

Цитата megaloman:



А зачем Вы удаляете саму папку? Вы предполагаете, что после удаления старых файлов она пустая?
CMD/BAT - [решено] Не пишется лог-файл по forfiles. Ищу помощи и совета.




"А что, так можно было!?"

... даже не подумал. Благодарю Вас 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[/i]



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





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

Re: CMD/BAT - [решено] Не пишется лог-файл по forfiles. Ищу помощи и совета.

Сообщение blacks2 »

Цитата megaloman:



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




Багодарствую! Работает!

А спойлер то и не заметил вначале. Ссылки смотрел а спойлер проглядел







P.S.

Итог (если кому-то понадобиться):




Скрытый текст

[spoiler]Код:
[/spoiler]

Код: Выделить всё

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
Ответить

Вернуться в «Скриптовые языки администрирования Windows»