%EB%A1%9C%20%EC%A0%84%ED%99%98%ED%95%98%EC%8B%9C%EA%B2%A0%EC%8A%B5%EB%8B%88%EA%B9%8C%3F.png)
현재 내 서버 서비스는 7za
다음과 같은 아카이브 파일을 추출하기 위해 호출하고 있습니다.
7za x "file" -o"output folder"
문제가 있어요출력 폴더에서 1시간보다 오래된 모든 파일을 제거하는 서버 규정 준수 Windows 정리 서비스로 인해. 서비스를 변경하는 것도 선택 사항이 아닙니다.
Output 폴더의 모든 파일은 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;
지원 리소스
- 날짜 가져오기
- 새로운 물품
- 시작 프로세스
- 배열
- Get-ChildItem
- ForEach-객체
기준별칭Foreach-Object의 경우: '
%
' 기호, ForEach - 만약에
- Set-ItemProperty
- 복사항목
- 제거 항목