切换 7zip CLI(7za)以将解压文件的修改时间设置为现在?

切换 7zip CLI(7za)以将解压文件的修改时间设置为现在?

现在我的服务器服务正在调用来7za提取这样的存档文件:

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

有问题由于服务器兼容 Windows 清理服务,它会清除输出文件夹中所有超过一小时的文件。更改服务也不可行。

输出文件夹中的所有文件每隔一分钟就会自动删除一次,因此有时即使是提取到此文件夹的用户也无法访问提取的文件,这是由于时间和每分钟运行一次的清理过程造成的。

问题:是否有一个开关可以告诉 7zip 将解压文件的修改时间设置为 [现在] 当前时间而不是档案中文件的时间?

答案1

作为一种解决方法对于此问题,可以将文件提取到临时位置后更改其修改日期属性,然后移动它们。

您可以通过 7za 将文件提取到临时文件夹,将提取的文件的修改日期值调整为当前日期时间戳,将它们移动到最终目的地,然后清理临时文件/文件夹。

只需使用变量值设置存档文件的完整路径位置$file。此外,使用变量值设置最终目标文件夹的完整路径位置,$dest使其指向具有每隔一分钟清除超过一定期限的文件的服务的位置。

电源外壳

$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;

支持资源

相关内容