Цитата DJ Mogarych:
по какому критерию скрипт должен понять, какая папка последняя созданная и что это новая папка, а не уже существовавшая. »
|
Так ведь есть критерий: по времени. А была она там или нет - неважно... если я правильно понял.
Цитата Super_Kolobok:
можно совсем упростить - Нужно паковать только последнюю созданную папку »
|
powershell
Код:
function Compress-New {
param(
[Parameter(Mandatory,ValueFromPipeline)]
$source,
$destination,
$swt1,
$swt2,
$arch
)
process{
$aout = $destination + '\' + $_.name + ('_{0:yyyy-MM-dd_HH-mm-ss}' -f (get-date))+'.zip'
$compress = @{
Path = $source
#CompressionLevel = "Fastest"
DestinationPath = $aout
}
if (!$swt1){
compress-archive @compress
if ($swt2) {del $source.fullname -force -rec}
} else {
if ($swt2) {&$arch a $aout $source -sdel} else {&$arch a $aout $source}
}
}
}
# каталог с архивами, лучше указать абсолютный путь:
$root = '.\1'
# целевой каталог для хранения новых архивов, лучше указать абсолютный путь:
$destination = '.\2'
$par = @{
Destination = (gi $destination).fullname
# путь к файлу внешнего архиватора 7zip
Arch = "d:\Program Files\7-Zip\7z.exe"
# ключ для выбора вида компрессии: 0 - встроенная упаковка, 1 - внешний архиватор 7zip
Swt1 = 1
# ключ для выбора удаления исходных файлов: 0 - не удалять, 1 - удалять
Swt2 = 1
}
if (dir $par.destination){
del $par.destination -rec -force
$null = md $par.destination
}
dir $root -dir|sort lastwritetime -des|select -first 1|compress-new @par