pepano
Goto Top

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?

Content-ID: 519037

Url: https://administrator.de/contentid/519037

Ausgedruckt am: 25.11.2024 um 17:11 Uhr

141965
141965 26.11.2019 aktualisiert um 18:45:54 Uhr
Goto Top
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  
}
0x32f1
Lösung 0x32f1 26.11.2019 aktualisiert um 19:10:11 Uhr
Goto Top
Ob das jetzt besonders sauber oder performant ist, sei mal dahingestellt, aber es sollte wenigstens funktionieren:

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.
pepano
pepano 27.11.2019 um 08:05:20 Uhr
Goto Top
Wow, super - vielen Dank für die ausführliche Erklärung. Ich werde es heute ausprobieren.
pepano
pepano 27.11.2019 um 11:06:23 Uhr
Goto Top
So, das Skipt funktioniert PERFEKT - Vielen lieben Dank!