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:

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
-------------------------------------------------------------------------------
   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-ID: 290947

Url: https://administrator.de/forum/robocopy-logs-bearbeiten-mit-powershell-290947.html

Ausgedruckt am: 13.04.2025 um 18:04 Uhr

114757
114757 15.12.2015 aktualisiert um 12:08:44 Uhr
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
ThunderbirdOP
ThunderbirdOP 15.12.2015 um 13:36:07 Uhr
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
114757
114757 15.12.2015 aktualisiert um 15:02:37 Uhr
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...
ThunderbirdOP
ThunderbirdOP 15.12.2015 aktualisiert um 14:16:51 Uhr
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:

1
'(?ism)^-{1,}(.*?)^-{1,}',"-"*80)  
114757
114757 15.12.2015 aktualisiert um 15:06:41 Uhr
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.
114757
Lösung 114757 16.12.2015 aktualisiert um 11:50:17 Uhr
Goto Top
Weil bald Weihnachten ist, hier ausnahmsweise mal die Lösung... face-wink
1
2
3
4
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.
ThunderbirdOP
ThunderbirdOP 16.12.2015 um 11:50:53 Uhr
Goto Top
Vielen Vielen Dank!!! face-smile face-smile

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