ここには66%の解決策(昼食は終わっています)があります。私はPowerShellので動作するネイティブジップを取得できませんでしたが、あなたはPowerShellのコミュニティの拡張機能がインストールされている場合、ジップコールを交換するためにスナップする必要があります How to create a zip archive with PowerShell?
# purloined from http://blogs.inetium.com/blogs/mhodnick/archive/2006/08/07/295.aspx
# I am not smart enough to make it work. Creates an empty .zip file for me
Function ZipIt
{
param
(
[string]$path
, [string]$files
)
if (-not $path.EndsWith('.zip')) {$path += '.zip'}
if (-not (test-path $path)) {
set-content $path ("PK" + [char]5 + [char]6 + ("$([char]0)" * 18))
}
$zipFile = (new-object -com shell.application).NameSpace($path)
#$files | foreach {$zipfile.CopyHere($_.fullname)}
foreach($file in $files)
{
$zipfile.CopyHere($file)
}
}
# this script is reponsible for enumerating subfolders
# for each file it finds, it will test the age on it
# returns an array of all the files meeting criteria
Function Walk-SubFolder
{
param
(
[string]$RootFolder
)
$searchPattern = "*.*"
$maxAge = 90
$now = Get-Date
# receiver for the files
[string[]] $agedOutFileList = @()
foreach($file in [System.IO.Directory]::GetFiles($RootFolder, $searchPattern, [System.IO.SearchOption]::AllDirectories))
{
# test whether the file meets the age criteria
$age = [System.IO.File]::GetLastWriteTime($file)
$days = ($now - $age).Days
if (($now - $age).Days -ge $maxAge)
{
# this needs to be archived
Write-Host("$file is aged $days days")
$agedOutFileList = $agedOutFileList + $file
}
}
return $agedOutFileList
}
Function PurgeFiles
{
param
(
$fileList
)
foreach($file in $fileList)
{
# this should be in a try/catch block, etc, etc
[System.IO.File]::Delete($file)
}
}
$sourceFolder = "C:\tmp\so"
$zipFile = "C:\tmp\so.zip"
$oldFiles = Walk-SubFolder $sourceFolder
ZipIt $zipFile $oldFiles
#This is commented out as the zip process is not working as expected
#PurgeFiles $oldFiles
私が働くことができるならば、私が表示されます後でジッパーを期待どおりに動作させることができます。
:
日付フィルタはこのような何かを行くことができます。これらのサブディレクトリには、.zipで終わらないファイルが含まれます。このプロセスは、過去90日間に作成されていない(作成/変更/アクセスされていない)すべてのファイルを識別し、それらを既存のディレクトリ構造の.zipに入れる必要があります。アーカイブファイルを作成したら、それらのファイルを削除する必要があります。正確? – billinkc
@billinkc - これで言及しましたが、 '\\ server \ oldlogs'ディレクトリにzipを作成するほうが簡単です。私はその日に最後に変更されたファイルを含む1日の名前のzipファイルで終わりたい。その後、はい、一度圧縮されたら、削除する必要があります。私は質問を更新します。ありがとう。 –
なぜpowershellタグを使用しますか?問題または機能スクリプトに関する意見が必要ですか? – mjsr