|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Архивирование за N дней и удаление исходников |
|
CMD/BAT - [решено] Архивирование за N дней и удаление исходников
|
Новый участник Сообщения: 7 |
Профиль | Отправить PM | Цитировать Добрый день!
Прошу помощи.. Необходимо добавить в скрипт чтобы архивировались файлы за последние 10 дней и удалялись исходники после архивации в папке. ( у самого нифига не получается) @Echo Off Setlocal Enableextensions chcp 1251 cls Set "BoxIn=C:\Box_In" - Откуда Set "BoxArc=C:\Box_Arc" - Куда Set "ARC=C:\Program Files\7-Zip\7z.exe" - Архиватор >"C:\Box_In\%~nx0.log" (Dir "%BoxIn%" &Dir "%BoxArc%" &Dir "%ARC%") For /F "usebackq delims=" %%f In (`2^>nul Dir "%BoxIn%\*_?????????.*" /B /A:-D forfiles /D 30 ^|FindStr /I /R /C:"^.*_[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]\."`) Do ( Set "Name=%%~nf" Call Set "Name=%%Name:~-9%%" Call Echo "%%f" %%Name%% >nul Call "%ARC%" u -tzip "%BoxArc%\%%Name%%.zip" "%BoxIn%\%%f" ) del /s /a "%BoxIn%\"*.m Exit /B |
|
Отправлено: 08:27, 22-10-2021 |
Ветеран Сообщения: 2708
|
Профиль | Отправить PM | Цитировать Цитата Kofeinchik:
Без ограничения по дням @Echo Off cls Set "BoxIn=Z:\Box_In" Set "BoxArc=Z:\Box_Arc" Set "Mask=*_?????????.m" Set FMask="^.*_[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]\.m" Set /A NN=9 Set "ARC=C:\Program Files\7-Zip.21beta\7z.exe" For /F "usebackq delims=" %%f In (`2^>nul Dir "%BoxIn%\%Mask%" /B /A:-D ^|FindStr /I /R /C:%FMask%`) Do ( If Exist "%BoxIn%\%%f" ( Set "Name=%%~nf" Call Set "Name=%%Name:~-%NN%%%" Call Echo "%%f" %%Name%% >nul Call "%ARC%" a -tzip -sdel "%BoxArc%\%%Name%%.zip" "%BoxIn%\*_%%Name%%%%~xf" ) ) pause Exit /B |
|
------- Отправлено: 10:27, 22-10-2021 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 7
|
Профиль | Отправить PM | Цитировать Цитата:
|
|
Отправлено: 10:43, 22-10-2021 | #3 |
Ветеран Сообщения: 2708
|
Профиль | Отправить PM | Цитировать Kofeinchik,
с 7zip получается длинно
@Echo Off cls Set "BoxIn=Z:\Box_In" Set "BoxArc=Z:\Box_Arc" Set "Mask=*_?????????.m" Set FMask="^.*\\.*_[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]\.m$" Set /A NN=9 Set /A DeltaDay=-10 Set "ARC=C:\Program Files\7-Zip.21beta\7z.exe" FOR /F "tokens=2 delims==." %%d in ('WMIC OS GET LOCALDATETIME /VALUE') DO SET "ToDay=%%d" &Call :FromDate %DeltaDay% %%ToDay:~6,2%%.%%ToDay:~4,2%%.%%ToDay:~0,4%% "DDat" For /F "usebackq delims=" %%f In (`2^>nul xcopy /L /D:%DDat:~4,2%-%DDat:~6,2%-%DDat:~0,4% "%BoxIn%\%Mask%" "%Tmp%" ^|FindStr /I /R /C:%FMask%`) Do ( If Exist "%%f" ( Set "Name=%%~nf" Call Set "Name=%%Name:~-%NN%%%" Call Echo "%%f" %%Name%% >nul Call "%ARC%" a -tzip -sdel "%BoxArc%\%%Name%%.zip" "%BoxIn%\*_%%Name%%%%~xf" ) ) pause Exit /B :FromDate rem Пересчет даты на заданное кол-во дней rem В первом аргументе +- дни rem Во втором аргументе дата в формате dd.mm.yyyy rem В третем аргументе имя переменной в кавычках где получим новую дату в формате yyyymmdd rem Заимствовано http://forum.oszone.net/thread-186889.html rem вызов Call :FromNow %DeltaDay% %Date% "yyyymmdd" rem результат в перемменной %yyyymmdd% SetLocal Set "DT=%~2" Set yyyy=%DT:~-4%& set /a mm=100%DT:~3,2%%%100& set /a dd=100%DT:~,2%%%100 Set /A JD=%~1+dd-32075+1461*(yyyy+4800+(mm-14)/12)/4+367*(mm-2-(mm-14)/12*12)/12-3*((yyyy+4900+(mm-14)/12)/100)/4 Set /A L=JD+68569,N=4*L/146097,L=L-(146097*N+3)/4,I=4000*(L+1)/1461001 Set /A L=L-1461*I/4+31,J=80*L/2447,K=L-2447*J/80,L=J/11 Set /A J=J+2-12*L,I=100*(N-49)+I+L Set /A yyyy=I,mm=100+J,dd=100+K EndLocal& Set "%~3=%yyyy%%mm:~-2%%dd:~-2%" GoTo :Eof Вариант с WinRar
@Echo Off cls Set "BoxIn=Z:\Box_In" Set "BoxArc=Z:\Box_Arc" Set "Mask=*_?????????.m" Set FMask="^.*_[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]\.m$" Set /A NN=9 Set /A DeltaDay=10 Set "ARC=C:\Program Files\WinRAR\WinRAR.exe" For /F "usebackq delims=" %%f In (`2^>nul Dir "%BoxIn%\%Mask%" /B /A:-D ^|FindStr /I /R /C:%FMask%`) Do ( If Exist "%BoxIn%\%%f" ( Set "Name=%%~nf" Call Set "Name=%%Name:~-%NN%%%" Call "%ARC%" u -ibck -ep -afzip -tn%DeltaDay%d -df "%BoxArc%\%%Name%%" "%BoxIn%\*_%%Name%%%%~xf" 2>nul Call Dir /b /A:-D "%BoxArc%\%%Name%%.*" ) ) pause Exit /B @Echo Off cls Set "BoxIn=Z:\Box_In" Set "BoxArc=Z:\Box_Arc" Set "Mask=*_?????????.m" Set FMask="^.*_[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]\.m$" Set /A NN=9 Set /A DeltaDay=-10 Set "ARC=C:\Program Files\7-Zip.21beta\7z.exe" 2>nul Md "%BoxIn%\OldFiles" 2>nul FORFILES /P "%BoxIn%" /M "%Mask%" /D %DeltaDay% /C "cmd /C >nul Move /Y @path "%BoxIn%\OldFiles\" For /F "usebackq delims=" %%f In (`2^>nul Dir "%BoxIn%\%Mask%" /B /A:-D ^|FindStr /I /R /C:%FMask%`) Do ( If Exist "%BoxIn%\%%f" ( Set "Name=%%~nf" Call Set "Name=%%Name:~-%NN%%%" Call Echo "%%f" %%Name%% >nul Call "%ARC%" a -tzip -sdel "%BoxArc%\%%Name%%.zip" "%BoxIn%\*_%%Name%%%%~xf" ) ) pause Exit /B |
------- Последний раз редактировалось megaloman, 22-10-2021 в 15:50. Отправлено: 15:15, 22-10-2021 | #4 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Архивирование и удаление файлов в папке старше n дней | ryoryoryo | Скриптовые языки администрирования Windows | 14 | 09-04-2021 15:19 | |
CMD/BAT - копирование и архивирование, удаление | art_27 | Скриптовые языки администрирования Windows | 0 | 18-03-2014 16:39 | |
CMD/BAT - удаление и архивирование в распределенной файловой системе | Uuups | Скриптовые языки администрирования Windows | 1 | 22-07-2013 13:30 | |
Прочее - удаление файлов старше 10 дней | admin666 | Общий по Linux | 1 | 23-07-2009 19:09 | |
удаление программ из исходников | Zheka1 | Программное обеспечение Linux и FreeBSD | 8 | 17-08-2004 13:57 |
|