Forum

Пожалуйста or Регистрация для создания сообщений и тем.

Ежедневная сортировка файлов из системной папки загрузок в отдельную папку и их очистка по расписанию.

Когда-то давно, ещё в том году задумался написать для себя программу, которая чистит системную папку с загрузками так как мне нужно.

CleanDay.bat

@echo off
chcp 65001 >nul

set "n=&echo."

set sFolderName=%date% (%time:~0,-3%)
set usname=%username%

md C:\Users\%usname%\Downloads\"На удаление"\"%sFolderName::=-%"
Echo Была создана папка %sFolderName::=-% в каталаге "На удаление"

robocopy "C:\Users\%username%\Downloads" "C:\Users\%username%\Downloads\На удаление\%sFolderName::=-%" /move /e /XD "На удаление"
cls&Echo Все файлы были перемещены в C:\Users\%usname%\Downloads\На удаление\%sFolderName::=-% %n%Через месяц, вам придёт уведомление об удалении!
timeout /t 5 & exit


CleanMon.bat

@echo off
chcp 65001 >nul
:ForseRequest
set ForseImput=
Echo Предупреждение об удалении файлов
set /p ForseImput="Y - Удалить, N - Не удаляь. Y/N:"

if /i "%ForseImput%"==" " (cls& Echo Ошибка: Введен пробел& goto ForseRequest)
    if /i "%ForseImput%"=="" (cls& Echo Ошибка: Ничего не введено & goto ForseRequest)
        if /i %ForseImput%==y (cls& set Forse=1&& goto Runing)
            if /i %ForseImput%==n (cls& set Forse=0&& goto Closing)
cls& echo Ошибка: Неверный ввод& goto ForseRequest          
echo ==============================
:Runing

set usname=%username%

set targetdir="C:\Users\%usname%\Downloads\На удаление\"
del /q %targetdir%\*
for /d %%x in (%targetdir%\*) do @rd /s /q ^"%%x^"


exit

:Closing
exit
pause



Cleaner.bat

@echo off
chcp 65001 >nul

for /F "delims=" %%i in (Config.cfg) do set VAR1=%%i
if "%VAR1%"=="'ClanerMon=0 CleanerDay=0'" (set Forse=0) 


for /F "delims=" %%i in (Config.cfg) do set VAR1=%%i
if "%VAR1%"=="'ClanerMon=1 CleanerDay=1'" (set Forse=1) 

set "n=&echo."
set usname=%username%

:ForseRequest
set ForseImput=
Echo Данная программа предназначена для ежемесячной очистки папки с загрузками,%n%хотите-ли вы добавить задачу в планировщик задач?%n%Добавить задачу?%n%Статус программы:%Forse%
set /p ForseImput="Y - Хочу, N - Не хочу. Y/N:"

if /i "%ForseImput%"==" " (cls& Echo Ошибка: Введен пробел& goto ForseRequest)
    if /i "%ForseImput%"=="" (cls& Echo Ошибка: Ничего не введено & goto ForseRequest)
        if /i %ForseImput%==y (cls& set Forse=1&& goto Runing)
            if /i %ForseImput%==n (cls& set Forse=0&& goto Closing)
cls& echo Ошибка: Неверный ввод& goto ForseRequest          
echo ==============================
:Runing
Copy CleanDay.bat C:\Windows\CleanerDay.bat
Copy CleanMon.bat C:\Windows\CleanerMon.bat
cls
Echo Программа была запущена
Echo 'ClanerMon=1 CleanerDay=1'> Config.cfg
Echo Статус программы: %Forse%

md C:\Users\%usname%\Downloads\"На удаление"
Echo Была создана папка C:\Users\%usname%\Downloads\На удаление

SCHTASKS /create /sc MONTHLY /st 08:00 /tn CleanerMon /tr "C:\Windows\CleanerMon.bat start /min"
cls
Echo Была создана задача, запускать очистку каждый месяц
SCHTASKS /create /sc DAILY /st 20:00 /tn CleanerDay /tr "C:\Windows\CleanerDay.bat start /min"
cls
Echo Была создана задача, запускать ежедневную пред-очистку
pause
exit

:Closing

Echo Вы действительно хотите удалить задачу по ежемесячной очитске?
pause
cls
SCHTASKS /delete /tn CleanerMon 
cls
Echo Задача по ежемесячной очистке была удалена
Echo Вы действительно хотите удалить задачу по ежедневной очистке?
pause
SCHTASKS /delete /tn CleanerDay 
cls
del C:\Windows\CleanerDay.bat
del C:\Windows\CleanerMon.bat
cls
Echo Задача по ежедневной очистке была удалена
Echo Программа была отключена
Echo 'ClanerMon=0 CleanerDay=0'> Config.cfg
Echo Статус программы: %Forse%
pause
exit

Сама суть программы: Спросить пользователя, правда ли он хочет добавить программу в планировщик задач. Если пользователь соглашается: Создать папку "На удаление", в каталоге "Downloads", и добавить в планировщик задач. По достижению 23:59, создать папку с текущей датой, перенести все файлы из загрузок в папку "На удаление", в каталог с текущей датой. В последний день месяца удалить все папки из каталога "На удаление". Хотелось бы, чтобы кто-нибудь довёл это дело до ума, сам я не помню как всё тут работает. Да, есть системная сортировка файлов, но она мне не нравиться, лично для меня удобнее смотреть по папкам. Это просто была задача, которую я решал от скуки.

Приветствую 👋
Вам не кажется что слишком все за мудрено?
Зачем делать целенаправленно хлам в загрузках?
Что бы потом попытаться создать прогу, которая это все разгребет?
ИМХО, проще все сохранять на рабочий стол, и закидывать куда надо, или удалять

Удаленный пользователь и Удаленный пользователь отреагировали на эту запись.
Удаленный пользовательУдаленный пользователь

Денис, привет 🖐
Вообще, Kiya229 попросил программу, а не это.

Удаленный пользователь, Удаленный пользователь и ещё 4 отреагировали на эту запись.
Удаленный пользовательУдаленный пользовательУдаленный пользовательУдаленный пользовательУдаленный пользовательУдаленный пользователь

Привет!

Цитата: Денис от 08.08.2022, 22:14

Приветствую 👋

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

Цитата: Денис от 08.08.2022, 22:14

Что бы потом попытаться создать прогу, которая это все разгребет?

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

Цитата: Денис от 08.08.2022, 22:14

ИМХО, проще все сохранять на рабочий стол, и закидывать куда надо, или удалять

В плане кода точно мудрёно, удивительно, что оно до сих пор работает хоть и появился баг с первой папкой.

Цитата: Денис от 08.08.2022, 22:14

Вам не кажется что слишком все за мудрено?

ТЗ:

Спросить пользователя, правда ли он хочет добавить программу в планировщик задач.

✓ 

Если пользователь соглашается: Создать папку "На удаление", в каталоге "Downloads", и добавить в планировщик задач.

✓ 

По достижению 23:59, создать папку с текущей датой, перенести все файлы из загрузок в папку "На удаление", в каталог с текущей датой.

✓ 

В последний день месяца удалить все папки из каталога "На удаление".

✓ 

Удаленный пользователь, Удаленный пользователь и ещё 7 отреагировали на эту запись.
Удаленный пользовательУдаленный пользовательУдаленный пользовательУдаленный пользовательУдаленный пользовательУдаленный пользовательУдаленный пользовательУдаленный пользовательУдаленный пользователь

Привет.
Даже и подумать не мог, ну точнее не то что б подумать не мог, просто не приходило в голову что можно написать программу которой можно оптимизировать процес сортировки файлов, скажем так.
Очень крутая прога и лично моей маме она будет очень даже полезной.
Спасибо автору за саму идею и спасибо XpucT за реализацию.
У меня только один вопрос, а если комп не будет работать в 23:59, то программа будет при следующем запуске компьютера это все делать или как?

admin и Удаленный пользователь отреагировали на эту запись.
adminУдаленный пользователь

Думаю если проставить в ручную в параметрах [simple_tooltip content='']"Немедленно запускать задачу, если пропущен плановый запуск"[/simple_tooltip], то будет работать, могу ошибаться.

Цитата: Oleg Lyaskovsky от 09.08.2022, 11:23

У меня только один вопрос, а если комп не будет работать в 23:59, то программа будет при следующем запуске компьютера это все делать или как?

admin отреагировал на эту запись.
admin