Jump to content

PS: Robocopy Log weiterverarbeiten


Direkt zur Lösung Gelöst von BOfH_666,
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo zusammen,

 

ich synchronisiere bei mir Täglich meine Daten von einem NAS auf ein anderes mit Robocpy.

 

Jetzt würde ich in der Ergebnismail gern die kopierten Daten ausgeben.

 

Im log sieht es ja bekanntlich so aus:


                    Insgesamt   KopiertšbersprungenKeine šbereinstimmung    FEHLER    Extras
Verzeich.:      1811         0         0         0         0         0
  Dateien:      20429         0     20429         0         0         0
    Bytes:       5.944 t         0   5.944 t         0         0         0
   Zeiten:       0:02:22   0:00:00                       0:00:00   0:02:22

 

Ich hab jetzt versucht, die kopierten Bytes auszuschneiden. Leider ohne Erfolg.

Aktuell bekomme ich zumindest die Zeile ausgeschnitten, die ich weiterarbeiten möchte:


Bytes:   5.944 t         0   5.944 t         0         0         0

 

Wie kann ich jetzt die kopierten Bytes, in diesem Fall 0 rasufiltern?

 

Danke schon einmal

Link zu diesem Kommentar

OK ... das sieht wirklich nicht nach großem Erfolg aus. ;-)  .... :D  .... aber dafür hast Du ja uns ...  ;-)  ... ich hab grad mal gesucht, ich hatte mal eine Funktion gebaut, die robocopy benutzt, um die Anzahl der Dateien und Unterodner in einem gegebenen Verzeichnis und deren Gesamtgröße ermittelt. Daraus hier dann der SChnipsel um die Werte aus dem Log zu fräsen:

$logdatei | Where-Object {"$_" -match "(Dateien|Files\s)\:\s+(\d+)\s"} | Out-Null
$AnzahlDateien = "{0,9:0,0}" -f [INT]$Matches[2]

$logdatei | Where-Object {"$_" -match "(Verzeich\.|Dirs\s)\:\s+(\d+)\s"} | Out-Null
$AnzahlUnterOrdner = "{0,10:0,0}" -f [INT]$Matches[2]

$Groesse = "{0,12:n2}" -f [math]::Round((($logdatei | Where-Object {$_ -match "Bytes"}).trim().split(" ")[1]) / 1MB , 2)
#endregion                

#region Erzeugen des Ausgabeobjekts
[PSCustomObject]@{
    "Subfolders"    = $AnzahlUnterOrdner
    "FileCount"     = $AnzahlDateien
    "Size    (MB)"  = $Groesse
}

Probier ob's passt ... es sollte mit deutschem und englishem robocopy log klar kommen

 

Edit: Achso  ... was ich noch vergessen habe .... wichtig!!!  damit das funktioniert, musst Du robocopy mit dem SChalter /bytes aufrufen!!!!

bearbeitet von BOfH_666
Link zu diesem Kommentar
vor 1 Stunde schrieb BOfH_666:

OK ... das sieht wirklich nicht nach großem Erfolg aus. ;-)  .... :D  .... aber dafür hast Du ja uns ...  ;-)  ... ich hab grad mal gesucht, ich hatte mal eine Funktion gebaut, die robocopy benutzt, um die Anzahl der Dateien und Unterodner in einem gegebenen Verzeichnis und deren Gesamtgröße ermittelt. Daraus hier dann der SChnipsel um die Werte aus dem Log zu fräsen:


$logdatei | Where-Object {"$_" -match "(Dateien|Files\s)\:\s+(\d+)\s"} | Out-Null
$AnzahlDateien = "{0,9:0,0}" -f [INT]$Matches[2]

$logdatei | Where-Object {"$_" -match "(Verzeich\.|Dirs\s)\:\s+(\d+)\s"} | Out-Null
$AnzahlUnterOrdner = "{0,10:0,0}" -f [INT]$Matches[2]

$Groesse = "{0,12:n2}" -f [math]::Round((($logdatei | Where-Object {$_ -match "Bytes"}).trim().split(" ")[1]) / 1MB , 2)
#endregion                

#region Erzeugen des Ausgabeobjekts
[PSCustomObject]@{
    "Subfolders"    = $AnzahlUnterOrdner
    "FileCount"     = $AnzahlDateien
    "Size    (MB)"  = $Groesse
}

Probier ob's passt ... es sollte mit deutschem und englishem robocopy log klar kommen

 

Edit: Achso  ... was ich noch vergessen habe .... wichtig!!!  damit das funktioniert, musst Du robocopy mit dem SChalter /bytes aufrufen!!!!

Danke für das Skript,

 

funktioniert mit meiner Logdate auch, aber ich habe keinen Plan, wich das jetzt umgebogen bekomme auf kopierte Bytes. Dafür fehlt mir gerade ein wenig das KnowHow

Link zu diesem Kommentar
vor 1 Stunde schrieb Kuddel071089:

funktioniert mit meiner Logdate auch, aber ich habe keinen Plan, wich das jetzt umgebogen bekomme auf kopierte Bytes. Dafür fehlt mir gerade ein wenig das KnowHow

??? Wenn's schon funktioniert, brauchst Du doch nix mehr umbiegen!? Falls doch nicht: Wer hat denn den robocopy-Befehl so eingerichtet, dass er Daten von einem NAS auf's nächste schiebt? Dem sagst Du, er soll als weitere Option an die Kommandozeile ein "/BYTES" anhängen - das wars. Damit würde robocopy nicht mehr "KB" oder "MB" oder "GB" angeben, sondern immer nur Bytes. Und das rechnet der Code immer in "MB" um.  ;-)

Link zu diesem Kommentar

Du hast das Talent, mich zu verwirren.  ;-) Hattest Du nicht vorhin geschrieben, dass es auch mit Deiner "Logdate" funktioniert? Was wird denn ausgegeben? Bitte immer daran denken, dass wir (ich) Deinen Bildschirm nicht sehen können (kann). Es wäre also hilfreich, zu sehen, welchen Code genau Du benutzt hast, welche Fehlermeldungen Du evtl. bekommen hast und vielleicht welche Ausgabe Du erhalten hast und wie sich diese zur erwarteten Ausgabe unterscheidet.

Link zu diesem Kommentar

Okay dann versucheich jetzt noch einmal ausführlicher zu beschreiben :-) ^^

 

Ich habe die Logdatei importiert und versucht weiter zu verarbeiten

 

Quelldaten (klassicher Robocopy Log)


                 Insgesamt   Kopiert  ÜbersprungenKeine šbereinstimmung    FEHLER    Extras
Verzeich.:        1811               0              0          0         0         0
  Dateien:     20429                0     20429           0         0         0
    Bytes:      5.944 t      2.000 t     5.944 t          0         0         0
   Zeiten:      0:02:22     0:00:00                       0:00:00   0:02:22
   Beendet: Donnerstag, 28. Juni 2018 08:16:42

 

 

Mich interessieren jetzt nur die 2.000 t in der Spalte "kopiert".

 

Bis jetzt habe ich es geschafft den import auf die Zeile zu minimieren

cls
$temp = "K:\temp.txt"

$logdatei = Get-content K:\backup_nas_Log.txt -Tail 7
$logdatei | Out-File -FilePath $temp

$logdatei = Get-Content $temp -Tail 4
$logdatei | Out-File -FilePath $temp
$logdatei = Get-Content $temp | Select-Object -first 1


$logdatei
Remove-Item $temp

 

Ergebnis:


 Bytes:   5.944 t   2.000 t   5.944 t         0         0         0

 

Jetzt muss ich die 2.000t irgendwie noch aus der Zeile ausschneiden...

bearbeitet von Kuddel071089
Link zu diesem Kommentar
  • Beste Lösung

OK, Du benutzt also nicht mein Codebeispiel. Na das erklärt schon ein wenig. Wenn Du meinen Code benutzen wolltest, bräuchtest Du die Logdatei nicht vorher aufwändig zerteilen, sondern könntest sie komplet verfüttern. Dafür müsstest Du allerdings VORHER bei Deinem nächsten Copyjob mit robocopy den Aufruf von robocopy so anpassen, dass robocopy entsprechend große Jobs nicht mehr in GB oder TB angibt, sondern in Bytes. Das hatte ich ja oben shcon beschrieben. .... soviel dazu.

 

Wenn Du jetzt mit Deinem Code weitermachen möchtest, hast Du verschiedene Möglichkeiten. Eine einfachere wäre z.B., die Zeile einfach an den Leerstellen aufzusplitten und dann einfach das 5. Element auszugeben.  So hier:

($logdatei -split "\s+")[4]

 

Link zu diesem Kommentar

Hmmmm ... bist Du Dir wirklich sicher? Wenn ich Deine Beispiel-Logdaten richtig interpretiere, die Du am Anfang gepostet hattest, hast Du dort 2TB von insgesamt 5.99TB kopiert. In der Ausgabe, die Du hier oben zeigst, steht 0GB. Bist Du sicher, dass das so zusammenpasst, wie Du Dir das vorstellst? Deshalb hätte mein Code die kopierten Bytes immer als Bytes entgegengenommen und selbst in MB umgerechnet. Damit könntest Du die automatische "Zusammenfassung" größerer Dateimengen von robocopy umgehen.  ;-)

bearbeitet von BOfH_666
Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...