Großes Ordner-Archiv nach Daten durchsuchen und kopieren

Alle anderen Themen ...

Moderator: ModerationP

Großes Ordner-Archiv nach Daten durchsuchen und kopieren

Beitragvon Adrian Müller » 03. Okt 2019, 14:27

Hallo zusammen,

Wollte mal fragen ob von euch vielleicht wer eine Idee hätte wie folgendes am einfachsten/besten umsetzen könnte:

Ich habe ein großes Ordnerstruktur (viele Unterordner) aus welchem ich bestimmte Daten die Kriterien entsprechen heraus kopieren möchte in einen einzelnen Ordner.

Die Kriterien sind folgende:

Dateiendung: ".prt"
Dateiname enthält nicht: "abc" ODER "cba" ODER "xyz" ODER .... (Also ne art String vergleich)
Aus zu schließende Ordner: "ungültig" ODER "Punkt1" ODER "Punkt2" ODER ....

Das gesamte Verzeichnis hat eine Größe von mehreren TB und es sollen ungefähr 500 GB in einen Ordner kopiert werden.
Die Quelle und das Ziel sind beide auf Servern und nicht lokal falls das wichtig ist.

Wie macht man den so etwas am besten?
Mit ner Batch oder geht das einfacher (bei Google habe ich robocopy gefunden aber das kopiert soweit ich verstanden habe Ordner auch mit)?

Hab leider auf diesem Bereich keinerlei Erfahrung :roll:

Würde mich sehr freuen wenn mir hier jemand helfen könnte :D

Mfg
Adrian
Adrian Müller
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 37
Registriert: 24. Mai 2018, 11:41

Re: Großes Ordner-Archiv nach Daten durchsuchen und kopieren

Beitragvon Fen » 03. Okt 2019, 14:47

Hallo,

prinzipiell ist Powershell dafür sehr gut geeignet. Ein Beispiel wäre:

Code: Alles auswählen
Bestimmte Dateien aus Unterverzeichnissen kopieren:

------------------ V1 ------------
$Path = "S:\Verein\Saison"
$Files = Get-ChildItem -Path $Path\A19*.pdf
$ServerPath ="S:\Verein\Archiv"
foreach($File in $Files){
Copy-Item $Path\$NewName $ServerPath }
------------------ V2 -------------
get-childitem -path "S:\Verein\A19*.pdf" -recurse -file | copy-item -destination "s:\verein\archiv" -Force -verbose
-----------------------------------


Zuerst müßten allendings die Nebenbedingungen getestet und eingebaut werden.

Käme PS infrage? Es sollte ab Win7 möglich sein.

mfg
Fen
 

Re: Großes Ordner-Archiv nach Daten durchsuchen und kopieren

Beitragvon Adrian Müller » 03. Okt 2019, 15:30

Hallo Fen,

Danke für die Antwort!

Ich habe noch nie mit Powershell gearbeitet und werde mir das morgen mal genauer ansehen (grundsätzlich gefällt mir das was ich bis jetzt gesehen habe schon sehr :D ).

Mal schauen wie weit ich komme.
Sieht aber auf jeden Fall schon mal spannend aus.

Wenn ich zusammenbekomme was ich möchte werde ich mal den Code rein Posten ansonsten wird es wohl noch mal zum nachfragen :roll:
Aber mal sehen.

Mfg
Adrian
Adrian Müller
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 37
Registriert: 24. Mai 2018, 11:41

Re: Großes Ordner-Archiv nach Daten durchsuchen und kopieren

Beitragvon Fen » 03. Okt 2019, 15:58

mit "Filter" kam ich nicht weiter, aber das wäre ein Ansatz für die Bedingungen:

Code: Alles auswählen
$fl = Get-ChildItem -Path c:\temp\ -Include ('*.txt',  '*.py') -Exclude ('Fav*', 'cc*')  -Recurse
#$fl.name
"`n ------ `n"

foreach ($f in $fl) {
     #$f.Name
     if ($f.name.contains("Beau")) { ($f.FullName) }
     else {
     ('------' + $f.Name) }
   
}
Fen
 

Re: Großes Ordner-Archiv nach Daten durchsuchen und kopieren

Beitragvon knobbi38 » 03. Okt 2019, 16:33

Hallo Fen,

vielleicht hilft dieses Tool:
https://www.windowspro.de/wolfgang-sommergut/findstr-das-grep-fuer-windows

Gruß Ulrich
knobbi38
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 1396
Registriert: 02. Jul 2015, 14:23

Re: Großes Ordner-Archiv nach Daten durchsuchen und kopieren

Beitragvon Adrian Müller » 04. Okt 2019, 12:39

Hallo zusammen,

Danke vorab mal für die Antworten!
das hat mich gleich auf die richtige Spur geführt denke ich :roll:

Mein Code sieht jetzt folgendermaßen aus:

Code: Alles auswählen
cls
$quellpfad = "\\atfile01\10_Archiv\"
$zielpfad = "C:\Users\Public\WORK"
$Dateiendung = "*.prt"
$counterfind = 0
$progressnow = 0
$i = 0
$groesse = 0

"*****************************************************************************`n"
Write-Host "Einlesen der Verzeichnissstruktur gestartet!`n"
"*****************************************************************************`n"
$dat = Get-ChildItem -Path $quellpfad -Include $Dateiendung -Recurse
$datcount = @($dat).Count
Write-Host "Einlesen der Verzeichnissstruktur fertig`n"
"*****************************************************************************`n"
Write-Host "Daten werden kopiert`n"
"*****************************************************************************`n"

foreach ($file in $dat) {

    If (-Not ($file.FullName -match "ungültig") ) {

        #Write-Output $file.Fullname
        #Copy-Item ($file.fullname) $zielpfad -WhatIf

        $counterfind = $counterfind + 1
        $groesse = $file.Length + $groesse
    }

    $progressnow = $progressnow +1
    $i = [math]::Round($progressnow / $datcount *100)

    Write-Progress -Activity "Daten werden kopiert" -PercentComplete $i -Status "Processing $($i)";
}

"Es wurden " + $counterfind + " Dateien kopiert! `n"
"Gesammtes Datenvolumen der Gefundenen Dateien ist " + [math]::Round($groesse / 1GB) + "GB`n`n"
"*****************************************************************************`n"
Read-Host -Prompt "Press Enter to close`n"


das funktioniert auch schon sehr gut :P

Ich Liste damit jetzt nur die Dateien auf und kopiere noch nichts also.

Werde hier aber definitiv noch etwas weiter basteln :D

SG
Adrian
Adrian Müller
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 37
Registriert: 24. Mai 2018, 11:41


Zurück zu Offtopic (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste