现在我的服务器服务正在调用来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;