<
【子フォルダ圧縮スクリプト】
圧縮ソフトは WinRAR を使用
フォルダの絶対パスを指定する。
指定された絶対パス内のアイテムごとに圧縮する。
圧縮の詳細
RAR書式
リカバリーレコード 3%
サブフォルダは含めない
圧縮率は "最高圧縮"
<
WinRARコマンドラインパラメータ
a 圧縮を行う。
-ilog エラーログを$rarexeフォルダに出力する。
-r- 再帰的なサブフォルダの圧縮を行わないようにする。
-rr3% リカバリーレコードを3%に設定
-m5 圧縮率を最高に設定
$rarexe = "C:\Program Files\WinRAR\WinRAR.exe"
$rarparam = 'a -r- -ilog -rr3% -m5 {0}.rar {0}\*'
function ArchiveExecute([string] $arcpath, [string] $argument) {
$argument = $argument.Split(' ') | % { '"{0}"' -f $_ }
$argument = [string]::Join(" ", $argument)
$curdir = [System.Environment]::CurrentDirectory
[System.Environment]::CurrentDirectory = (Get-Location).Path
$proc = New-Object System.Diagnostics.Process
$proc.StartInfo.FileName = $arcpath
$proc.StartInfo.Arguments = $argument
$proc.StartInfo.CreateNoWindow = $true
[void]$proc.Start()
$proc.WaitForExit()
$proc.Close()
[System.Environment]::CurrentDirectory = $curdir
}
$target = 'C:\logs','D:\logs','E:\logs'
$target |
% { dir $_ | % { $_.FullName } } |
% { `
// カレントディレクトリを変更(スクリプトの実行環境内のみ)
cd $_; `
dir $_ |
% { ArchiveExecute $rarexe ($rarparam -f $_.Name) } `
}