thunderbirdop
Goto Top

Robocopy Logs bearbeiten mit PowerShell

Hallo Leute,

ich will, dass Powershell alle Robocopy Logs nach meinen Vorstellungen ändert und dann in einer neuen Datei speichert.
Und zwar soll folgende Änderung vorgenommen werden:

Das was bei den Logs zwischen den Bindestricken steht (also die einzelnen Pfade und Dateien) durch 5 Sterne ersetzt, also wie folgt:

-------------------------------------------------------------------------------
   ROBOCOPY     ::     Robustes Dateikopieren fr Windows                              
-------------------------------------------------------------------------------

  Gestartet: Tue Dec 08 17:08:22 2015

   Quelle : C:\Daten\
     Ziel : \\Backup\D$\Daten\

    Dateien : *.*
	    
  Optionen: *.* /TEE /S /E /COPYALL /DCOPY:T /PURGE /NP /MT:4 /R:0 /W:30 

------------------------------------------------------------------------------

	*****

------------------------------------------------------------------------------

           Insgesamt   KopiertšbersprungenKeine šbereinstimmung    FEHLER    Extras
Verzeich.:      5523        17      5506         0         0         1
  Dateien:     62505       118     62387         0         0        40
    Bytes:  17.701 g  117.31 m  17.586 g         0         0   21.77 m
   Zeiten:   0:03:29   0:00:14                       0:00:00   0:03:08


Geschwindigkeit:            15016868 Bytes/Sek.
Geschwindigkeit:             859.272 Megabytes/Min.

  Beendet: Tue Dec 08 17:13:37 2015
Ich habe circa 20 dieser Logs die ich jeden Tag auf Fehler prüfen muss und dann wie oben beschrieben bearbeiten und anschließend drucken muss.
Powershell sollte dann alle Textdateien zu einer zusammenfügen: z.B Ich habe folgende Unterordner im Ordner Daten: Produkte, Gebäude, etc.. und diese Ordner enthalten 3-5 Logs welche ich bearbeiten und zusammenfügen muss, also nach Unterordners sortiert.

VIelleicht hat jemand eine Idee! Ich bin nicht sehr bewandert in Powershell, aber taste mich langsam heran.

Content-Key: 290947

Url: https://administrator.de/contentid/290947

Printed on: April 19, 2024 at 10:04 o'clock

Mitglied: 114757
114757 Dec 15, 2015 updated at 11:08:44 (UTC)
Goto Top
Moin,
schon mal die Logging Parameter von Robocopy angeschaut ?
/nfl /ndl /nc /ns /np
lösen dein Problem schon ohne PS face-wink

Wenn PS sein muss
[regex]::Replace((gc 'c:\temp\*.log' | out-string),'(?ism)^-{1,}(.*?)^-{1,}',"-"*80) | set-content 'C:\temp\merged.txt'
Gruß jodel32
Member: ThunderbirdOP
ThunderbirdOP Dec 15, 2015 at 12:36:07 (UTC)
Goto Top
Hey danke dir!

Es muss per PS sein face-smile

Das Skript ist schon fast perfekt, leider fehlen ein paar Dinge:

1. Die Sterne fehlen
2. Die Kopfzeile von Robocopy fehlt
3. Die Abstände der einzelnen Textdateien in dem zusammengeführten Element sind zu klein, da sollten circa 5 Leerzeilen dazwischen sein.

Aber danke für deine Hilfe! Hätte nicht erwartet, dass mir so gut geholfen wird face-smile
Mitglied: 114757
114757 Dec 15, 2015 updated at 14:02:37 (UTC)
Goto Top
Zitat von @ThunderbirdOP:
1. Die Sterne fehlen
Kannst du dir selber wieder mit einbauen face-wink
2. Die Kopfzeile von Robocopy fehlt
Wozu brauchst du die ??
3. Die Abstände der einzelnen Textdateien in dem zusammengeführten Element sind zu klein, da sollten circa 5 Leerzeilen dazwischen sein.
Einfach den Replace-String anpassen...
Member: ThunderbirdOP
ThunderbirdOP Dec 15, 2015 updated at 13:16:51 (UTC)
Goto Top
Die Kopfzeile brauche ich einfach damit die alten Logs mit den neuen übereinstimmen.

Damit ich den Replace-String anpassen kann, müsstest du mir (einem PowerShell Neuling) erstmal erklären, was genau dein Skript macht, bzw. dieser der Teil:

'(?ism)^-{1,}(.*?)^-{1,}',"-"*80)  
Mitglied: 114757
114757 Dec 15, 2015 updated at 14:06:41 (UTC)
Goto Top
Gegen Cash mach ich es dir gerne passend, das sind ja persönliche Anpassungen, ist ja hier kein Wunschkonzert ... face-wink, kurze PM und die Lösung kommt pronto.
Mitglied: 114757
Solution 114757 Dec 16, 2015 updated at 10:50:17 (UTC)
Goto Top
Weil bald Weihnachten ist, hier ausnahmsweise mal die Lösung... face-wink
gci 'c:\temp\*.log' | %{  
    [regex]::Replace((gc $_.Fullname | out-string),'(?sim)(^-{78}[\r\n]*$)(.*?)(^-{78})','$1' + "`t*****`r`n" + '$3')  
    "`r`n"*5  
} | set-content 'C:\merged.log'  
Gruß und viel Erfolg beim Powershell lernen.
Member: ThunderbirdOP
ThunderbirdOP Dec 16, 2015 at 10:50:53 (UTC)
Goto Top
Vielen Vielen Dank!!! face-smile face-smile

Ich wünsche dir frohe Weihnachten und einen guten Rutsch. face-smile