Ordner mit Daten einer Excel-Datei durchsuchen

striker0815

Cadet 4th Year
Registriert
Nov. 2012
Beiträge
85
Komplette Ordner per Batch kopieren

Hallo liebes Forum,

ich habe eine Excel-Datei mit 4000 Datensätzen (Untereinander, 13-Stellige Zahl). Auf unserem Server gibt es einen Ordner mit über 10000 .jpg Dateien. Ich muss die 4000 dort raussuchen und in einen Extra Ordner kopieren. Gibt es eine schnellere Möglichkeit als die Zahl zu kopieren, über den Explorer zu suchen, die gefundene Datei kopieren und in dem anderen Ordner einzufügen? Da bin ich nämlich sonst bestimmt zwei Wochen mit beschäftigt.

LG und Danke für jede Hilfe

Striker
 
Zuletzt bearbeitet:
Sind die Bilder im Namensformat <Zahl>.jpg vorhanden? Wenn ja, dann speicher die Datei als csv und löse das ganze mit PowerShell.
Code:
$bilder = Get-content C:\bla\Bilder.csv
$bilder | ForEach-Object {Copy-Item "C:\bla\" + $_ + ".jpg" -destination "C:\Ziel1\Ziel2"}
Ob der Code so direkt klappt kann ich gerade nicht testen, sollte aber in etwa so aussehen...

Mfg Kae
 
Es gibt eine einfache Möglichkeit:

1. Füge in Excel eine Spalte vor die Nummer ein.
2. Schreibe in diese Spalte "copy \\server\bilder\"
3. Gehe in die Spalte hinter die Nummer und schreibe in diese ".jpg c:\ExtraOrdner"
4. Ziehe beide Spalten nach unten damit sie in jeder Zeile sind.

Kopiere das ganze nach Notepad++ und ersetzte "\t" durch "", und speicher das ganze als ".cmd" oder ".bat" ab.

Alles jeweils ohne die "". Teste es erst mal mit einer Zeile.

Falls du noch fragen hast melden. Ach ich habe es auch nicht getestet.
 
Nein, ich kann leider nicht Programmieren. Problematisch ist, dass die Dateien noch in Unterordnern sind, also
\\Server\Ordner\Uordner1
\\Server\Ordner\Uordner2

usw.

Die Batchdatei müsste also auch noch alle Unterordner durchsuchen.
 
Das macht die ganze Sache etwas komplizierter, aber ich versuche es trotzdem mal.
1. Die Excel Datei als CSV-Datei speichern
2. Eine PowerShell Konsole öffnen (Windows Taste + R drücken -> Powershell eingeben -> Enter drücken)
3. Zum Hauptordner der Bilder wechseln
4. Folgenden Code eingeben:
Code:
$folderpics = ls -Recurse
$csvpics = Get-content C:\<bla>\Bilder.csv
$folderpics | ForEach-Object {If ($csvpics -contains $_.Name) {Copy-Item $_.Fullname -destination "C:\<Zielordner>"}}

Mfg Kae
 
Also
Excel: 1. Spalte die 13-Stelligen Nummern eingetragen und als .csv in D:\Cover\Bilder.csv gespeichert.
Mit Powershell in N:\ navigiert (hier liegen die Ordner mit den Bildern)
Schritte 1, 2 und 3 ausgeführt
Allerdings ist in D:\Cover kein Bild gelandet :(

ps.JPG
 
Code:
$csvpics = Get-content C:\<bla>\Bilder.csv
Hier wird versucht den Inhalt der Datei in einer Variable zu speichern.
Du schreibst sie liegt unter 'D:\Cover\Bilder.csv' in deinem Screenshot wird sie aber unter 'D:\Bilder.csv' gesucht. Dementsprechend wird nichts eingelesen und richtigerweise nichts kopiert. ;)

Mfg Kae

PS: Es kann sein, dass das Skript, wenn es läuft eine Zeit lang brauch, bis es alle Dateien kopiert hat.
 
Aber wie du weiter unten im angehängten Screenshot siehst habe ich das ja noch korrigiert, also D:\Cover\Bilder.csv

@gozza: gibt es eine Möglichkeit das ganze so zu erweitern, dass die batchdatei eine TXT erstellt, in der steht, welche Dateien nicht gefunden wurden?
 
Zuletzt bearbeitet:
Okay, trotzdem danke.

Habe mir aber anders Helfen können

1. Den Überordner nach "*.jpg" durchsucht
2. Alle Bilder in einen einzigen Ordner kopiert
3. Gazzo's Methode (Batchdatei) mit dem Zusatz " >> Bilderlog.log", schreibt für jeden Kopiervorgang in das Logfile, ob die Datei gefunden und kopiert wurde oder nicht
4. Logfile geöffnet, alles Kopiert und hinter den Zahlen in der Excel-Tabelle eingefügt. So weiß ich, welche Dateien nicht gefunden wurden
 
Oh, sorry gozza :D

Neues Problem: die gleiche Geschichte muss ich jetzt mit ca 2TB an .wav-Dateien, auch wieder in einzelnen Unterordnern. Ich habe nicht genug Speicher um sie alle vorübergehend in einen Ordner zu speichern und die o.g. Methode zu verwenden... Vorschläge??
 
Was das ganze vereinfacht:
die wav-files heißen 09020455555550101 (die letzten 4 stellen sind CD und Tracknummer). Sie befinden sich in einem Ordner mit dem namen 0902045555555. Eigentlich reicht es, wenn ich den ganzen Ordner mit Inhalt kopiere. das habe ich mit

xcopy I:\0902045555555 D:\Wav >> D:\Wav\log.log /E

hinbekommen. Nur behält er den Ordnernamen nicht bei, sondern erstellt einen neuen Ordner mit dem namen "1", in den er den Inhalt des 0902045555555 Ordners kopiert.

Noch mal vereinfacht erklärt: ich möchte etwa 5000 Ordner mit Inhalt von I nach D kopieren, alle sollen ihren Namen behalten.


EDIT: Habs hinbekommen:

xcopy I:\090204626045 D:\Wav\090204626045\ >> D:\Wav\log.log /Y /E /S
 
Zuletzt bearbeitet:
Zurück
Oben