%20para%20establecer%20la%20hora%20de%20modificaci%C3%B3n%20de%20los%20archivos%20extra%C3%ADdos%20ahora%3F.png)
En este momento, el servicio de mi servidor está llamando 7za
para extraer archivos como este:
7za x "file" -o"output folder"
hay un problemadebido a un servicio de limpieza de Windows de cumplimiento del servidor que purga todos los archivos que tienen más de una hora en la carpeta Salida. Realizar cambios en el servicio tampoco es una opción.
Todos los archivos en la carpeta Salida se eliminan automáticamente cada minuto, por lo que a veces incluso los usuarios que extraen a esta carpeta no pueden acceder a los archivos extraídos debido al tiempo y al proceso de limpieza que se ejecuta una vez cada minuto.
Pregunta:¿Hay algún interruptor para indicarle a 7zip que establezca la hora de modificación de los archivos extraídos en [ahora] la hora actual en lugar de la hora de los archivos dentro del archivo?
Respuesta1
Como solución alternativaPara solucionar este problema, es posible cambiar los atributos de fecha de modificación de los archivos una vez que se extraen a una ubicación temporal y luego moverlos.
Puede extraer los archivos a una carpeta temporal a través de 7za, ajustar los valores de fecha de modificación de los archivos extraídos para que sean la fecha y hora actual, moverlos al destino final y luego limpiar los archivos/carpeta temporales.
Simplemente configure la ubicación de la ruta completa del archivo comprimido con el $file
valor de la variable. Además, establezca la ubicación de la ruta completa de la carpeta de destino final con el $dest
valor de la variable apuntándolo a la ubicación que tiene el servicio que purga los archivos que contiene cada minuto con una antigüedad determinada.
Potencia Shell
$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;
Recursos de apoyo
- Obtener la fecha
- Nuevo artículo
- Proceso de inicio
- matrices
- Get-ChildItem
- Para cada objeto
EstándarAliaspara Foreach-Object: el
%
símbolo '', ForEach - Si
- Establecer propiedad del elemento
- Copiar elemento
- Remover el artículo