Цитата 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