Home » Форум

Форум

[Решено] bat-файл для очистки временных файлов и ПАПОК  

 

STALKER_SLX
(@stalker_slx)
Eminent Member
Присоединился: 7 месяцев назад
Сообщения: 39
25.12.2018 12:11  

Доброго времени суток, уважаемые форумчане!

Тема данного вопроса уже многократно избита на просторах Интернета, но очень бы хотелось услышать мнение опытных практикующих админов!

Нашел простенький батник (назовём его «del_tmp.bat») со следующим содержимым:

@echo OFF

del %Temp%\*.* /S /F /Q

del c:\windows\temp\*.* /S /F /Q

echo Vse vremennyie fayly udaleny

pause

@echo ON

 

Данный скрипт хорошо справляется с удалением временных файлов в профиле пользователя и чистит c:\windows\temp. Но есть одно «Но» - он удаляет только лишь файлы!

1. В связи с чем вопрос: какие строки нужно добавить в указанный bat-файл, чтобы он удалял и ПАПКИ по указанных путях?!

2. Если есть у кого-то скрипт получше – прошу поделится!

3. Будет такой скрипт нормально выполняться на продакшин серверах ( сам пока еще не тестировал) ?! Или нужно что-то иное применять?!

This topic was modified 6 месяцев назад by STALKER_SLX

Цитата
Zerox
(@zerox)
Reputable Member Admin
Присоединился: 5 лет назад
Сообщения: 325
25.12.2018 16:13  

Я вот такой строкой чищу директории старше 30 дней:

forfiles /p D:\tmp /s /d -30 /c "cmd /c rmdir /s /q @path"

А вот этой файлы:

forfiles /p D:\tmp /s /d -30 /c "cmd /c del @path /q"

This post was modified 6 месяцев назад by Zerox

ОтветитьЦитата
STALKER_SLX
(@stalker_slx)
Eminent Member
Присоединился: 7 месяцев назад
Сообщения: 39
25.12.2018 17:24  

А если эти две строки

forfiles /p D:\tmp /s /d -30 /c "cmd /c rmdir /s /q @path"

forfiles /p D:\tmp /s /d -30 /c "cmd /c del @path /q"

объединить в один BAT-файл, будет нормально работать? Если да, то прошу подсказать какова будет итоговая конструкция?! Или таки нужно их по отдельности запускать из командной строки?

Прошу простить за малограмотность, правильно ли я понимаю, что "@path" - заменяет раннее указанный в строке путь к папке, которую мы чистим?!

This post was modified 6 месяцев назад by STALKER_SLX

ОтветитьЦитата
Zerox
(@zerox)
Reputable Member Admin
Присоединился: 5 лет назад
Сообщения: 325
25.12.2018 19:40  

Я не помню, что там к чему, можно легко загуглить команду forfiles и почитать описание. У меня батник из двух таких команд работает в шедулере на ноутбуке и чистит папку с временными файлами. 


ОтветитьЦитата
STALKER_SLX
(@stalker_slx)
Eminent Member
Присоединился: 7 месяцев назад
Сообщения: 39
03.01.2019 00:15  

Спасибо Вам, Zerox, за помощь!

Данную задачу решил следующим образом – к указанным выше строкам добавил еще парочку (которые как раз таки отвечают за удаление ПАПОК, по заданным путям):

SET Path2Del=C:\Windows\Temp\

for /R "%Path2Del%" %%F in (.) DO IF NOT "%%F"=="%Path2Del%." (RD /S /Q "%%F") ELSE (Del /F /S /Q "%Path2Del%*")

SET Path2Del=%Temp%\

for /R "%Path2Del%" %%F in (.) DO IF NOT "%%F"=="%Path2Del%." (RD /S /Q "%%F") ELSE (Del /F /S /Q "%Path2Del%*")

 

В итоге вся конструкция теперь выглядит так:

@echo off

del %Temp%\*.* /S /F /Q

del C:\Windows\Temp\*.* /S /F /Q

SET Path2Del=C:\Windows\Temp\

for /R "%Path2Del%" %%F in (.) DO IF NOT "%%F"=="%Path2Del%." (RD /S /Q "%%F") ELSE (Del /F /S /Q "%Path2Del%*")

SET Path2Del=%Temp%\

for /R "%Path2Del%" %%F in (.) DO IF NOT "%%F"=="%Path2Del%." (RD /S /Q "%%F") ELSE (Del /F /S /Q "%Path2Del%*")

echo Vse vremennyie faylyi i papki udaleny

pause

@echo ON

 

Если кому- то в будущем понадобиться такой файлик, то прикрепляю его в архиве «del_tmp_files_&_folders.zip»

P.S.: Как только появиться немного времени попробую еще погуглить, чтобы решить эту же задачу более элегантно и универсально, но средствами самого PowerShell!


ОтветитьЦитата
Share:
  
Работает

Пожалуйста, Вход или Зарегистрироваться