Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - [решено] backup файлов прошлого месяца

Ответить
Настройки темы
Любой язык - [решено] backup файлов прошлого месяца
it3 it3 вне форума

Пользователь


Сообщения: 94
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изменения
Автор: it3
Дата: 15-09-2018
Добрый день!
Есть необходимость написать BAT-файл, который бы архивировал файлы прошлого месяца и складывал в отдельную папку.
Вот мои наброски - но что то пошло не так (не работает). Подсобите пожалуйста.
Код: Выделить весь код
@echo on

set  param=%1
set source=f:\Share\LOGS\%param:"=%
set  dst=%source%\bkp
set  dst_tmp=%dst%\tmp

echo %date%
set d=%date:~0,2%
set /a m=%date:~3,2%-1
set y=%date:~6,4%

if %m:~0,1% neq 1 set m=0%m%
set date_prep=%y%%m%%d%
set date_ym=%y%%m%
echo %date_prep%

if not exist "%dst%" md "%dst%"
if not exist "%dst_tmp%" md "%dst_tmp%"
pause
if %param% == "bkp" goto expt
goto for

:expt
echo "ќвг Ї*ЇЄг *Ґ ва®Ј*Ґ¬"
goto end

:for
forfiles /m *%date_ym%*.* -p "%source%"  /C  "cmd /c move @file \"%dst_tmp%\""

goto bkp

:bkp 
"%ProgramFiles(x86)%\7-Zip\7z.exe" a -tzip -mx9 "%dst%\%param:"=%_%date_ym%.zip" "%dst_tmp%\*.*"
IF %ERRORLEVEL%==0 goto ok
goto end
:ok
del "%dst_tmp%\*.*"  /q
rd "%dst_tmp%"
goto end

:end

Отправлено: 15:24, 13-09-2018

 

Аватара для YuS_2

Crazy


Contributor


Сообщения: 1171
Благодарности: 487

Профиль | Отправить PM | Цитировать


Цитата it3:
Ежемесячно - поэтому совпадений имен не должно быть. Исходные файлы удалять после архивирования. Подкаталог "bkp" есть в каждом каталоге - этот та папка, в которую складываются архивы. Кроме *.txt нет. »
Код: Выделить весь код
function arch-filter ($swt1,$swt2) {
	process{
		$dname = $_.basename
		if(!(test-path (
			$a = $_.fullname + $f_bck
		) -patht container)){md $a|out-null}
		$arr = dir $_.fullname -filt $flt2 -file|%{
			if($_.lastwritetime.month -le (get-date).addmonths(-1).month){
				$_.fullname
			}
		}
		if($arr){
			$b = $a+'\'+$dname+('_{0:yyyy-MM-dd_HH-mm-ss}' -f (get-date))+'.zip'
			if (!$swt1){
				compress-archive $arr $b -force
				if ($swt2){del (gi $arr).fullname -force}
			} else {
				if ($swt2){&$arch a $b $arr -sdel} else {&$arch a $b $arr}
			}
		} else {
			write-host "В каталоге $dname файлы для архивирования отсутствуют." -foreg yellow
		}
	}
}
#корневой каталог, лучше указать абсолютный путь:
$fld = 'logs'
#подкаталог для хранения архивов (обязательный формат со слешем):
$f_bck = '\bkp'
#фильтр для отбора каталогов содержащих файлы *.txt:
$flt1 = '*'
#фильтр для отбора только файлов *.txt:
$flt2 = '*.txt'
#путь к файлу внешнего архиватора 7zip
$arch = 'c:\Program Files\7-Zip\7z.exe'

#ключ для выбора вида компрессии: 0 - встроенная упаковка, 1 - внешний архиватор 7zip
$swtch1 = 1
#ключ для выбора удаления исходных файлов: 0 - не удалять, 1 - удалять
$swtch2 = 1 

dir $fld -filt $flt1 -dir|arch-filter $swtch1 $swtch2

-------
scio me nihil scire. Ѫ

Это сообщение посчитали полезным следующие участники:

Отправлено: 12:30, 17-09-2018 | #11



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

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.

it3 it3 вне форума Автор темы

Пользователь


Сообщения: 94
Благодарности: 0

Профиль | Отправить PM | Цитировать


YuS_2, спасибо.

Отправлено: 12:56, 17-09-2018 | #12



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - [решено] backup файлов прошлого месяца

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Удаление всех файлов в папке бекап - кроме первой записи каждого месяца fabble86@vk Скриптовые языки администрирования Windows 12 13-12-2017 12:34
CMD/BAT - [решено] Копирование файлов бекапов из папок за 1,10,20 число каждого месяца alevakr Скриптовые языки администрирования Windows 4 17-11-2017 10:52
2008 R2 - [решено] Не могу создать Backup задачу через планировщик. Windows Server Backup/ deem73 Windows Server 2008/2008 R2 4 23-12-2014 09:03
CMD/BAT - BackUp файлов с выбором папок codi28 Скриптовые языки администрирования Windows 0 10-05-2014 16:49
CMD/BAT - Бекапирование Оутлук заблокированных pst файлов (backup Outlook) почты через bat/cmd biossa Скриптовые языки администрирования Windows 0 28-09-2011 22:02




 
Переход