Powershell ile 2 dosya arasındaki farkı bulma
Powershell ile 2 dosya arasındaki farkı bulma.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
<#Bu script, 2 txt file karşılaştırır, farkları renkli olarak hem terminale hem de zaman damgalı olarak log file yazar İki dosya arasında fazla olanlar "+" ile İki dosya arasında eksik olanlar "-" ile gösterilir. #> #Dosya Yolları $Son2obje = Get-ChildItem "C:\Users\45119495\Downloads" -Filter *.csv |Sort-Object {$_.LastWriteTime} -Descending |select -First 2 $file1 = (Get-Content $Son2obje.Get(0)) $file2 = (Get-Content $Son2obje.Get(1)) $logFile = "C:\Ali\Temp\DiffLogs.log" <#Eğer bir klasörden son 2 txt dosyasını otomatik almak istersek aşağıdaki kod $myfile = Get-ChildItem C:\DailyCPUMemoryCheck -Filter *.txt |Sort-Object {$_.LastWriteTime} -Descending |select -First 2 #Objeleri getir $myfile1 = (Get-Content $myfile.Get(0)) $myfile2 = (Get-Content $myfile.Get(1)) #> ### İşler başlasın #### #1- Dosyaları Oku $content1 = $file1 $content2 = $file2 #2- Dosyaları Karşılaştır $diff = Compare-Object $content1 $content2 #3- Log için zaman damgası düzenleyelim $timestamp = (Get-Date).ToString("yyyy-MM-dd HH:mm:ss") "=== Fark Karşılaştırması - $timestamp ===" | Out-File $logFile -Append #4- Farkları yazdır ve logla foreach ($item in $diff) { if ($item.SideIndicator -eq "<=") { Write-Host "- $($item.InputObject)" -ForegroundColor Red "- $($item.InputObject)" | Out-File $logFile -Append } elseif ($item.SideIndicator -eq "=>") { Write-Host "+ $($item.InputObject)" -ForegroundColor Green "+ $($item.InputObject)" | Out-File $logFile -Append } } #5- Eğer fark yoksa not düş if (-not $diff) { Write-Host "Dosyalar arasında fark yok." -ForegroundColor Yellow "Dosyalar arasında fark yok." | Out-File $logFile -Append } #6 Log sonuna boş satır ekle "`n" | Out-File $logFile -Append Write-Host "`nFarklar log dosyasına kaydedildi: $logFile" -ForegroundColor Cyan |