Ordnerstruktur durchsuchen, Dateien hinzufügen
Hallo, habe hier ein Problem und erhoffe mir Rat von euch.
Ausgangslage: Es gibt einen Ordner (Bsp: D:\Hauptordner\) mit massig Unterordnern dessen Enden je eine PDF-Datei enthalten. Bsp: 00001.pdf bis 99999.pdf
In einem anderen Ordner (Bsp: C:\Bilder\) habe ich dazu passende Bilddateien Bsp: 00001.jpg bis 99999.jpg zentral liegen.
Nun wünsche ich mir eine Stapelverarbeitung die die einzelnen jpg Dateien aus C:\Bilder in den passenden D:\Hauptordner\Unterordner.... kopiert, und zwar in den Unterodner wo gleichnamige pdf liegt. Die Routine müsste also erst den Hauptordner und Unterordner durchsuchen bis sie die richtige Stelle findet.
Ist so etwas machbar?
Ausgangslage: Es gibt einen Ordner (Bsp: D:\Hauptordner\) mit massig Unterordnern dessen Enden je eine PDF-Datei enthalten. Bsp: 00001.pdf bis 99999.pdf
In einem anderen Ordner (Bsp: C:\Bilder\) habe ich dazu passende Bilddateien Bsp: 00001.jpg bis 99999.jpg zentral liegen.
Nun wünsche ich mir eine Stapelverarbeitung die die einzelnen jpg Dateien aus C:\Bilder in den passenden D:\Hauptordner\Unterordner.... kopiert, und zwar in den Unterodner wo gleichnamige pdf liegt. Die Routine müsste also erst den Hauptordner und Unterordner durchsuchen bis sie die richtige Stelle findet.
Ist so etwas machbar?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 519037
Url: https://administrator.de/contentid/519037
Ausgedruckt am: 25.11.2024 um 17:11 Uhr
4 Kommentare
Neuester Kommentar
Powershell als Beispiel:
$folderpdf = 'D:\Root'
$folderImages = 'D:\Images'
Get-ChildItem $folderpdf -File -Recurse -Filter *.pdf | %{
Get-ChildItem $folderImages -File -Filter "$($_.BaseName).jpg" | copy-item -Destination $_.DirectoryName -Verbose
}
Ob das jetzt besonders sauber oder performant ist, sei mal dahingestellt, aber es sollte wenigstens funktionieren:
Ordnerstruktur vorher
Script:
Ordnerstruktur nachher:
Hinweise:
- Arbeite nicht ohne Datensicherung
- Setze im Script oben deine Verzeichnisse ein
- Meine Dateinamen waren siebenstellig (Dateiname + Punkt + Extension). Wenn deine länger sind, ändere das im Script ("(bei "SET pdfPath=!pdfPath:~0,-7!")"
- Für alle jpgs in deinem Ordner wird ein PDF mit identischem Namen gesucht. Sollte es Duplikate geben, wird das Bild zum ersten Match verschoben und für den Rest hagelt es Fehlermeldungen.
Ordnerstruktur vorher
C:.
├───jpgs
│ 001.jpg
│ 002.jpg
│ 003.jpg
│
└───pdfs
├───001
│ 001.pdf
│
├───asdf
│ 002.pdf
│
└───xyz
003.pdf
Script:
@ECHO OFF
SET pdfRoot=C:\temp\0x32f1\pdfs
SET jpgRoot=C:\temp\0x32f1\jpgs
SETLOCAL EnableDelayedExpansion
FOR /F "delims=" %%a IN ('DIR /b "%jpgRoot%\*.jpg"') DO (
SET jpgName=%%a
SET pdfName=!jpgName:~0,-4!.pdf
FOR /F "delims=" %%b IN ('DIR /b /s "%pdfRoot%\!pdfName!"') DO (
SET pdfPath=%%b
SET pdfPath=!pdfPath:~0,-7!
MOVE "%jpgRoot%\!jpgName!" "!pdfPath!"
)
)
Ordnerstruktur nachher:
C:.
├───jpgs
└───pdfs
├───001
│ 001.jpg
│ 001.pdf
│
├───asdf
│ 002.jpg
│ 002.pdf
│
└───xyz
003.jpg
003.pdf
Hinweise:
- Arbeite nicht ohne Datensicherung
- Setze im Script oben deine Verzeichnisse ein
- Meine Dateinamen waren siebenstellig (Dateiname + Punkt + Extension). Wenn deine länger sind, ändere das im Script ("(bei "SET pdfPath=!pdfPath:~0,-7!")"
- Für alle jpgs in deinem Ordner wird ein PDF mit identischem Namen gesucht. Sollte es Duplikate geben, wird das Bild zum ersten Match verschoben und für den Rest hagelt es Fehlermeldungen.