alforno
Goto Top

Ordnerstruktur durchsuchen - passenden Ordner finden und Dateien in Unterordner kopieren

Hallo,

ich habe aktuell das Problem, dass ich gerne pdf Dateien über die Aufgabenplanung per batch in einer Ordnerstruktur ablegen möchte.

Ich lege per Software pdf Dateien in einen Ordner (D:\verarbeitet\) ab.
Die pdf Dateien werden nicht direkt in diesen Ordner gelegt, sondern in Unterordner, die automatisch erzeugt und als Ordnername aus einer 4 bis 6 stelligen Nummer bestehen.

D:\verarbeitet\3764\*.pdf
D:\verarbietet\10017\*.pdf

Die pdf Dateien sollen in eine andere Ordnerstruktur (E:\Ablage\) verschoben werden.
Dort existieren Unterordner die aus einer beliebigen Bezeichnung, gefolgt von einem Unterstrich und der bereits oben erwähnten Nummer bestehen.

Besipiel
E:\Ablage\Max.Mustermann_3764\
E:\Ablage\Peter Meier_10017\

Nun sind meine Batch Kenntnisse stark eingeschränkt, sodass ich hier nun um Hilfe betteln muss.
Mehr als eine groben Ablaufplan kann ich nicht beisteuern.

- Ordner D:\verarbeitet\ mit einer for Schleife durchlaufen, sofern Ordner vorhanden, Ordnernamen in eine Variable einlesen
- Im Pfad E:\Ablage\ mit einer for Schleife jeden Ordner durchlaufen und von rechts nach links bis zum Unterstrich alle zeichen in eine Variable einlesen
- Wenn die Werte beider Variablen übereinstimmen, die Datei verschieben
- Ordner im Pfad D:\verarbeitet\ löschen
- Sonst den nächsten Ordner durchsuchen
- Fertig.

Über Antworten würde ich mich freuen.

Schöne Grüße
Alforno

Content-ID: 292484

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

Ausgedruckt am: 22.11.2024 um 11:11 Uhr

122990
122990 08.01.2016 um 00:08:54 Uhr
Goto Top
Moin,
solltest du hiermit hin bekommen
@echo off
for /d %%a in ("D:\verarbeitet\*") DO (  
  for /d %%b in ("E:\Ablage\*_%%~nxa") DO (  
    move "%%a\*.pdf" "%%b\"  
    rd "%%a" /s /q  
  )
)

Gruß grexit
Alforno
Alforno 08.01.2016 um 18:09:27 Uhr
Goto Top
Moin grexit,

vielen Dank, das klappt einwandfrei.

Gerne möchte ich Dich noch um zwei Änderungen bitten.
Jeder Ordner unter E:\Ablage\ enthält Unterordner mit Jahreszahlen.

E:\Ablage\Max.Mustermann_3764\2014\
E:\Ablage\Max.Mustermann_3764\2015\

Die pdf Dateien sind immer nach folgendem Schema benannt:

2015-11-15_6476547.pdf
2014-03-20_89567523443.pdf

Besteht die Möglichkeit die Anweisung so zu erweitern, dass die pdf Datei immer in den dazugehörigen Ordner mit der gleichen Jahreszahl verschoben wird?
Der Ordner mit der Jahreszahl wird automatisch generiert, sodass dieser zum Zeitpunkt des Aufrufs der batch-Datei definitiv existiert.


Wenn das Skript unter dem Pfad "Ablage" keinen passenden Ordner mit der gleichen Nummer findet, würde ich den Ordner unter D:\verarbeitet\<Nummer>\ samt Inhalt gerne in den Ordner D:\Fehler\ verschieben.
So hätte ich eine Möglichkeit zeitnah festzustellen, welche Dateien nicht zuzuordnen waren.

Würde mich über eine Antwort freuen.

Schöne Grüße
Alforno
122990
Lösung 122990 08.01.2016, aktualisiert am 09.01.2016 um 12:46:33 Uhr
Goto Top
Guten Abend Alforno,
deine neuen Anforderungen sollten hiermit zu realisieren sein
@echo off & setlocal ENABLEDELAYEDEXPANSION
set "ablage=E:\Ablage"  
set "verarbeitet=D:\verarbeitet"  
set "fehler=D:\fehler"  

for /d %%a in ("%verarbeitet%\*") DO (  
  for /d %%b in ("%ablage%\*_%%~nxa") DO (  
    for %%c in ("%%a\*.pdf") DO (  
        set "name=%%~nc" & set "year=!name:~0,4!" & set "target=%%b\!year!"  
        if not exist "!target!" md "!target!" >nul  
        move "%%c" "!target!"  
    )
    rd "%%a" /s /q  
  )
)
robocopy "%verarbeitet%" "%fehler%" /e /move >nul  
if not exist "%verarbeitet%" md "%verarbeitet%" >nul  

Gruß grexit
Alforno
Alforno 09.01.2016 um 11:28:57 Uhr
Goto Top
Moin grexit,

vielen Dank für deine Lösung.
Beim Ausführen erhalte ich in der Kommandozeile allerdings die folgenden Fehlermeldung pro Datei:

"Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung ist falsch."

Die Bezichnungen der Unterordner in E:\Ablage\ können leider Leerzeichen, Umlaute Punkt und Komma enthalten.
Stellt das ein Problem dar?

Der Ordner "verarbeitet" wird am Ende gelöscht.
Besteht auch die Möglichkeit das nur der Inhalt verarbeitet wird und der Ordner erhalten bleibt?

Würde mich über eine Antwort freuen.

Schöne Grüße
Alforno
122990
122990 09.01.2016 aktualisiert um 12:35:49 Uhr
Goto Top
War nur ein kleiner Fehler in einer Variablenzuweisung, ist im letzten Post behoben, und die Verzeichnisse wurden zur leichteren Handhabung zusätzlich Variablen zugewiesen.

Gruß grexit
Alforno
Alforno 09.01.2016 um 12:46:16 Uhr
Goto Top
Funktioniert jetzt einwandfrei.
Vielen Dank für deine Mühe, das hat mir sehr weiter geholfen.

Schöne Grüße
Alforno