抽出されたファイルの変更時刻を現在に設定するには、7zip CLI (7za) に切り替えますか?

抽出されたファイルの変更時刻を現在に設定するには、7zip CLI (7za) に切り替えますか?

現在、私のサーバー サービスは7za次のようにアーカイブ ファイルを抽出するために呼び出しを行っています。

7za x "file" -o"output folder"

問題があるこれは、サーバー コンプライアンスの Windows クリーニング サービスにより、出力フォルダー内の 1 時間以上経過したすべてのファイルが消去されるためです。サービスに変更を加えることもできません。

出力フォルダー内のすべてのファイルは 1 分ごとに自動的に削除されるため、タイミングと 1 分ごとに実行されるクリーン プロセスにより、このフォルダーに抽出したユーザーであっても、抽出されたファイルにアクセスできない場合があります。

質問:抽出されたファイルの変更時刻を、アーカイブ内のファイルの時刻ではなく、現在の時刻に設定するように 7zip に指示するスイッチはありますか?

答え1

回避策としてこの問題を回避するには、ファイルを一時的な場所に抽出した後で、ファイルの変更日属性を変更し、その後ファイルを移動することができます。

7za を使用してファイルを一時フォルダーに抽出し、抽出したファイルの変更日付の値を現在の日付タイムスタンプに調整し、最終的な宛先に移動してから、一時ファイル/フォルダーをクリーンアップすることができます。

変数値を使用して、アーカイブ ファイルのフル パスの場所を設定します$file。また、最終保存先フォルダーのフル パスの場所を$dest変数値で設定し、そのフォルダー内の一定期間を過ぎたファイルを 1 分ごとに削除するサービスがある場所を指定します。

パワーシェル

$file = "C:\Folder\Path\File.zip"
$dest = "C:\Final\Destination\FolderPath"
$now = Get-Date
$nowf = "$($Env:Temp)\$((Get-Date).ToString("yyyyMMdd_hhssmmmtt"))"

New-Item -ItemType Directory -Force -Path $nowf
Start-Process "C:\Program Files\7-Zip\7za.exe" -ArgumentList "x $file -o$nowf" -NoNewWindow -Wait 

$i = Get-ChildItem -Path $nowf -File -Recurse
$i | % { Process {
    If (Test-Path $_.FullName){
        Set-ItemProperty -Path $_.FullName -Name LastWriteTime -Value $now
        Copy-Item -Path $_.FullName -Destination $dest -Force
        }    
    }};
Remove-Item -Path "$nowf" -Force -Recurse;

サポートリソース

関連情報