先日作成したShellだけど、コピー元のファイルを削除してはいけなかったので、24時間以内に作成されたファイルのみ抜き出して圧縮するように変更した。
以下ソースー----------------------
#定期的にフォルダをZIP化して対比しておくソース
#イベントログを書き出す関数
function writeEventlog([String]$LEVEL, [String]$MESSAGE){
}
$deletetime = Get-Date
$deletelimittime = (Get-Date).AddHours(-24)
$nametime = Get-Date -UFormat "%Y%m%d"
#対象フォルダリスト
$ConfFile = "C:\Users\user\Desktop\wk\20220630\FileArchiveList.conf"
#zipファイルの移動先フォルダ
$movepath = "C:\Users\user\Desktop\wk\20220630\moveTo"
#0:正常、1:異常
$SHELLRET = 0
#main
writeEventlog "INFO" ("start")
writeEventlog "INFO" ("ConfigFile=" + $ConfFile)
#対象フォルダリスト読み込み
$ArchiveList = Get-Content $ConfFile
foreach($Confline in $ArchiveList){
if($Confline -match "^$"){ continue }
if($Confline -match "^#"){ continue }
try{
#コピーフォルダ
$copypathFrom = $Confline
$copypathTo = $copypathFrom + "_" + $nametime
$copypathToZip = $copypathTo + ".zip"
$copypathToDummyFile = $copypathTo + "\" + $nametime
##フォルダ作成
#Copy-Item $copypathFrom -destination $copypathTo -recurse
New-Item $copypathTo -ItemType Directory
echo $copypathToDummyFile
#ダミーファイル作成
Out-File $copypathToDummyFile
#24時間以内に作成されたファイルをコピー
Get-ChildItem $copypathFrom |
Where-Object{ -not $_.PSIsContainer } |
Where-Object{ $_.CreationTime -gt $deletelimittime } |
Copy-Item -destination $copypathTo
#ZIP圧縮
Compress-Archive -Path $copypathTo -DestinationPath $copypathToZip
#フォルダ削除
Remove-Item -Path $copypathTo -Recurse
#zipファイル移動
Move-Item $copypathToZip $movepath
#古いファイル削除
#Get-ChildItem -Path $copypathFrom -Recurse | Where-Object{$_.LastWriteTime -lt $deletetime} | Remove-Item -Force #-WhatIf
}catch{
writeEventlog "ERROR" ("Archive error. RET=" + $RET_CMD + " Exception=" + $_.Exception)
$SHELLRET = 1
}
}
exit $SHELLRET