Я хочу создать сценарий powershell, в котором файлы журнала сжимаются в соответствии с датой его имени файла.
Я нашел в этой группе скрипт о сжатии файла в соответствии с датой изменения файла. Но то, что я ищу, - это сжатие файлов журналов, которые находятся в формате .jrn, и имя файла похоже на это ABCD20200710.jrn. И сжатие должно быть сделано после 90 дней генерации журнала. Я имею в виду 90 дней после того, как файл будет сгенерирован в соответствии с датой имени файла. Кроме того, я просто пытаюсь писать сценарии, а не очень хороший пользователь. Пожалуйста, веди меня.
Что я уже пробовал:
#get the list of files in the original folder $rootFolder = "C:\MyFiles\Output" $tempVariable = $rootFolder $files = Get-ChildItem -Path $rootFolder #create a temporary folder using today's date $tempFolderRoot = "C:\Temp_" $date = Get-Date $date = $date.ToString("yyyy-MM-dd") $tempFinalFolder = "$tempFolderRoot$date" New-Item -ItemType directory -Path $tempFinalFolder -Force #decide how long back to go $timespan = new-timespan -days 7 #move the files to a temporary location foreach($file in $files) { $fileLastModifieddate = $file.LastWriteTime if(((Get-Date) - $fileLastModifiedDate) -gt $timespan) { Move-Item "$rootFolder\$file" -destination $tempFinalFolder } } $CompressionToUse = [System.IO.Compression.CompressionLevel]::Optimal $IncludeBaseFolder = $false $zipTo = "{0}\Archive_{1}.zip" -f $rootFolder,$date #add the files in the temporary location to a zip folder [Reflection.Assembly]::LoadWithPartialName( "System.IO.Compression.FileSystem" ) [System.IO.Compression.ZipFile]::CreateFromDirectory($tempFinalFolder, $ZipTo, $CompressionToUse, $IncludeBaseFolder) #Remove-Item $tempFinalFolder -RECURSE
Garth J Lancaster
формат вашего файла журнала - "ABCD20200710.jrn" - всегда ли перед датой стоит всего 4 символа (например, 'ABCD')?
AVT007
Да. Это всего лишь 4 символа. Это лог-файл банкомата.