Модифицировал предыдущий скрипт.
Теперь он считывает из текстового файла маски файлов, которые надо заархивировать и удалить, затем делает своё черное дело :)
Единственный косяк, который пока не понял как устранить - архив уже должен существовать и быть архивом... Т. е. защиты от дурака не получилось у меня. Функция New-Item или как-то так создает файл, но текстовый - и это не подходит.
Вначале идет часть объявления, где в переменные заносятся все пути (чтобы легче было менять "под себя"), затем идет архивирование (если оно вообще нужно), а затем удаление.
Содержимое файлов со списками примерно такого формата:
B*.txt
*.dll
Del*f.doc
и т. п.
Теперь он считывает из текстового файла маски файлов, которые надо заархивировать и удалить, затем делает своё черное дело :)
Единственный косяк, который пока не понял как устранить - архив уже должен существовать и быть архивом... Т. е. защиты от дурака не получилось у меня. Функция New-Item или как-то так создает файл, но текстовый - и это не подходит.
Вначале идет часть объявления, где в переменные заносятся все пути (чтобы легче было менять "под себя"), затем идет архивирование (если оно вообще нужно), а затем удаление.
####### define parameters #----- get current date ----# $Now = Get-Date #----- define amount of days ----# $Days = "10" #----- define folder where files are located ----# $TargetFolder = "C:\gb\QuoteServer" #----- define LastWriteTime parameter based on $Days ---# $LastWrite = $Now.AddDays(-$Days) #----- define delete list file path $Del_List = "c:\scripts\files.txt" #----- define files fore archiving list file path ---# $Arch_List = "c:\scripts\archive.txt" #----- define archive file path - this file MUST exist! ---# $Arch_Path = "c:\scripts\test.zip" ####### archiving part foreach ($_ in Get-Content $Arch_List) { $Files = Get-Childitem $TargetFolder -Include $_ -Recurse | Where {$_.LastWriteTime -le "$LastWrite"} foreach ($File in $Files) { if ($File -ne $NULL) { write-host "Archiving File $File" -ForegroundColor "Green" $ZipFile = (new-object -com shell.application).NameSpace($Arch_Path) $ZipFile.CopyHere($_.fullname) } else { Write-Host "No more files to archive!" -foregroundcolor "Green" } } } ####### deleting part foreach ($_ in Get-Content $Del_List) { $Files = Get-Childitem $TargetFolder -Include $_ -Recurse | Where {$_.LastWriteTime -le "$LastWrite"} foreach ($File in $Files) { if ($File -ne $NULL) { write-host "Deleting File $File" -ForegroundColor "DarkRed" Remove-Item $File.FullName | out-null } else { Write-Host "No more files to delete!" -foregroundcolor "Green" } } }
Содержимое файлов со списками примерно такого формата:
B*.txt
*.dll
Del*f.doc
и т. п.
Комментариев нет:
Отправить комментарий