s.lamers
Goto Top

PDF umbenennen und verschieben - Ordnerstruktur aus Teilen des Dateinamens sowie Teilen der Eingangsordnerstruktur

Guten Abend zusammen,

ich habe ein Problem bei dem ich langsam nicht mehr weiter komme und egal wie ich es anstelle es tauchen immer neue Fehler auf und ich bekomme es nicht so zum laufen wie ich es bräuchte. (Bastle jetzt schon ewig dran rum, aber langsam und sicher verzweifle ich).

Vom "Prinzip" her ist es eigentlich nur ein Verschieben/Umbenennen aber die Vorgaben machen mir hier zu schaffen.
Meine aktuelle Batchdatei ist bereits 230 Zeilen lang klappt nicht wird immer länger und hat noch nicht alle möglichen Ordner drinnen face-sad.
Ich vermute das ich hier irgendeinen kompletten Denkfehler drinnen hab und bräuchte bitte Hilfe.

Folgende Struktur:

Die Daten kommen folgendermaßen rein:

Eingangsordner:
X:\Eingang\22\LSLL_10252873_01_7498537_231205140709464.pdf
X:\Eingang\22\LSLL_10252873_02_7498538_231205140709464.pdf
X:\Eingang\22\LSLL_10252873_03_7498539_231205140709464.pdf
X:\Eingang\22\AGB.pdf
X:\Eingang\23\LSLL_10252874_01_7498540_231205140709464.pdf
X:\Eingang\23\LSLL_10252874_02_7498541-2_231205140709464.pdf
X:\Eingang\23\LSLL_10252874_03_7498544_231205140709464.pdf
X:\Eingang\23\AGB.pdf
X:\Eingang\305-xije\LSLL_10252875_01_7498550_231205140709464.pdf
X:\Eingang\305-xije\LSLL_10252875_02_7498551_231205140709464.pdf
X:\Eingang\305-xije\LSLL_10252875_03_7498552_231205140709464.pdf
X:\Eingang\305-xije\AGB.pdf

Ziel ist das folgendes erreicht wird:
X:\Ausgang\2023\12\05\22\10252873\7498537.pdf
X:\Ausgang\2023\12\05\22\10252873\7498538.pdf
X:\Ausgang\2023\12\05\22\10252873\7498539.pdf
X:\Ausgang\2023\12\05\23\10252874\7498540.pdf
X:\Ausgang\2023\12\05\23\10252874\7498541-2.pdf
X:\Ausgang\2023\12\05\23\10252874\7498544.pdf
X:\Ausgang\2023\12\05\305-xije\10252875\7498550.pdf
X:\Ausgang\2023\12\05\305-xije\10252875\7498551.pdf
X:\Ausgang\2023\12\05\305-xije\10252875\7498552.pdf

Somit müsste ich irgendwie folgendes hinbekommen:
1. Die unnötigen AGB.pdf muss gelöscht werden
2. Im Ausgangsverzeichnis sollen die Ordner JJJJ\MM\TT\xxx\yyyyyyyy\ nur erstellt werden wenn es Daten hierfür gibt
3. JJJJ muss aus dem Dateinamen gezogen werden (letzte Zahlenreihe Zeichen 1+2) ergänzt um die 20 davor
4. MM muss aus dem Dateinamen gezogen werden (letzte Zahlenreihe Zeichen 3+4)
5. TT muss aus dem Dateinamen gezogen werden (letzte Zahlenreihe Zeichen 5+6)
6. Ordner xxx muss aus dem Pfad des Eingangsordner gezogen werden, kann auch deutlich länger sein.
7. Ordner yyyyyyyy muss aus dem Dateinamen gezogen werden (Zahlenreihe nach LSLL_)
8. Dateiname muss auf die vorletzte Zahlenreihe geändert werden, länge ist variable, steht aber immer zwischen den "_"
9. Datei soll am Ende Umbenannt vom Eingang in den richtigen Ausgangsordner verschoben werden.
10. Evtl. von Bedeutung, während das Batch läuft könnten neue/weitere Daten reinkommen.

Die Ordner sollen aber auch nur bei Bedarf angelegt werden, so das es keine leeren Ordner gibt. Nicht alle Ordner werden jeden Tag gebraucht.
Außerdem gibt es aktuell ca. 25 verschiedene Eingangsordner, so das dies jetzt nur Beispielhaft ist, können aber noch mehr werden.

Vielleich hat hier jemand eine Lösung, ich selber komme hier aktuell nicht mehr voran.

Content-Key: 6710358500

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

Printed on: May 7, 2024 at 01:05 o'clock

Member: Pjordorf
Pjordorf Dec 06, 2023 at 19:45:55 (UTC)
Goto Top
Hallo,

Zitat von @s.lamers:
ich habe ein Problem bei dem ich langsam nicht mehr weiter komme
ist das nicht wie deine Frage vom 21.04.2014 PDF umbenennen, Namen aus TXT an variabler Stelle auslessen sowie Ordnerstruktur aus altem Dateinamen

und egal wie ich es anstelle es tauchen immer neue Fehler auf
Schön wenn du aus deinen Fehlern Grhrimnisse machst und diesen aus Datenschutzgründen nicht nennen oder Haedkopieren tust. face-smile

Gruß,
Peter
Member: s.lamers
s.lamers Dec 06, 2023 updated at 19:56:59 (UTC)
Goto Top
Hallo Peter,

das Problem ist das ich bei jetzt 230 Zeilen in der Batch-Datei bin, jeden Ordner einzeln Abfrage hier es aber nicht klappt, und selbst die Ordner falsch angelegt werden. Die Dateien kopiert er dann auch noch in die falschen Ordner (von der letzten Abfrage in der Batch). Da ist der komplette Ansatz falsch und ein so „großer“ Wurm drinnen das neu Anfangen besser ist als dort auszubessern. Das ist auch der Grund weshalb ich „aufgegeben“ habe.

Es ist ähnlich zu dem aus 2014 aber leider mit anderen Vorgaben.

LG Siggi
Member: Pjordorf
Pjordorf Dec 06, 2023 at 20:13:41 (UTC)
Goto Top
Hallo,

Zitat von @s.lamers:
das Problem ist das ich bei jetzt 230 Zeilen in der Batch-Datei bin, jeden Ordner einzeln Abfrage hier es aber nicht klappt, und selbst die Ordner falsch angelegt werden. Die Dateien kopiert er dann auch noch in die falschen Ordner
Dann hat der Autor der Batch Unsinn gemacht und das auch noch in Klarschrift (Batch) festgehalten.
Aber ohne auch nur eine Zeile zu kennen (Ich Vermute @echo Off steht an Erster Stelle) kannst du keine Hilfe erwarten. Und keine Fehlermeldungen zu nennen hilft uns auch nicht weiter. Aber selbst 2014 war Batch eher schon am Sterben. PowerShell ist das neue. Du nutzt doch auch keine Windows 3.11 for Workgroups mehr, sondern Windows 10/11, oder?

(von der letzten Abfrage in der Batch). Da ist der komplette Ansatz falsch und ein so „großer“ Wurm drinnen das neu Anfangen besser ist als dort auszubessern. Das ist auch der Grund weshalb ich „aufgegeben“ habe.
Das hört sich an als wenn Batch noch nie deine Sache war, nur ein Copy+Paste.

Es ist ähnlich zu dem aus 2014 aber leider mit anderen Vorgaben.
Und warum dann nicht die Batch an die neuen Bedürfnisse Anpassen, oder gleich PowerShell nehmen?

Gruß,
Peter
Member: s.lamers
s.lamers Dec 06, 2023 at 20:41:58 (UTC)
Goto Top
Huhu Peter,

das was ich jetzt brauche ist halt für einen anderen Einsatzzweck, das alte läuft ja immer noch aktiv und tadellos face-smile

Und ja das was da unten zusammen kommt ist "Müll", es funktioniert einfach "null" und müsste zusätzlich bei jeder Ergänzung auch neu angepasst werden. Deswegen auch hier die Frage.

Und ja es ist viel Copy+Paste, aber mir fehlen zu viele Schnippsel um das zusammen zu bekommen und anstatt alles als extra Punkte laufen zu lassen muss es auch Möglichkeiten geben dies in einer Schleife abzuarbeiten.

Die Maschine ist zwangsweise Windows 7.

LG Siggi

@echo off & setlocal

set {{comment_strings:8711907426}} 
set {{comment_strings:32265909626}} 

goto :1

:ProcessFile 
for /f {{comment_strings:21274869769}} %%a in ({{comment_strings:31421414279}}) do set {{comment_strings:32856344969}}   
for /f {{comment_strings:93041036553}} %%a in ({{comment_strings:81745334558}}) do set {{comment_strings:32309616622}}  
for /f {{comment_strings:32632189916}} %%a in ({{comment_strings:72025511837}}) do set {{comment_strings:93318549856}}  
set Zielpfad=%Ordner%\20%Stempel:~0,2%\%Stempel:~2,2%\%Stempel:~4,2%\%Unterordner%\%Ladeliste%
echo %Zielpfad%
if not exist %Ordner%\20%Stempel:~0,2%\%Stempel:~2,2%\%Stempel:~4,2%\%Unterordner%\%Ladeliste% mkdir %Ordner%\20%Stempel:~0,2%\%Stempel:~2,2%\%Stempel:~4,2%\%Unterordner%\%Ladeliste%
ren %1 {{comment_strings:9473898299}}   
move /y %Eingang%\%Unterordner%\%Lieferschein%.pdf %Ordner%\20%Stempel:~0,2%\%Stempel:~2,2%\%Stempel:~4,2%\%Unterordner%\%Ladeliste%

goto :%next%


:1
set /a next=next+1
set {{comment_strings:81547256841}} 
if exist %Eingang%\%Unterordner%\AGB.pdf del %Eingang%\%Unterordner%\AGB.pdf /Q
if exist %Eingang%\%Unterordner%\*.pdf ren %Eingang%\%Unterordner%\*.pdf x*.pdf"  

for %%i in ({{comment_strings:52373568467}}) do call :ProcessFile {{comment_strings:34032911329}}   
goto :%next%

:2
set /a next=next+1
set {{comment_strings:63793624552}} 
if exist %Eingang%\%Unterordner%\AGB.pdf del %Eingang%\%Unterordner%\AGB.pdf /Q
if exist %Eingang%\%Unterordner%\*.pdf ren %Eingang%\%Unterordner%\*.pdf x*.pdf"  

for %%i in ({{comment_strings:21711670227}}) do call :ProcessFile {{comment_strings:81018807366}}   
goto :%next%

:3
set /a next=next+1
set {{comment_strings:82527295125}} 
if exist %Eingang%\%Unterordner%\AGB.pdf del %Eingang%\%Unterordner%\AGB.pdf /Q
if exist %Eingang%\%Unterordner%\*.pdf ren %Eingang%\%Unterordner%\*.pdf x*.pdf"  

for %%i in ({{comment_strings:63711187339}}) do call :ProcessFile {{comment_strings:32899979706}}   
goto :%next%

:4
set /a next=next+1
set {{comment_strings:82812051813}} 
if exist %Eingang%\%Unterordner%\AGB.pdf del %Eingang%\%Unterordner%\AGB.pdf /Q
if exist %Eingang%\%Unterordner%\*.pdf ren %Eingang%\%Unterordner%\*.pdf x*.pdf"  

for %%i in ({{comment_strings:11030300398}}) do call :ProcessFile {{comment_strings:33339096547}}   
goto :%next%

:5
set /a next=next+1
set {{comment_strings:11759630108}} 
if exist %Eingang%\%Unterordner%\AGB.pdf del %Eingang%\%Unterordner%\AGB.pdf /Q
if exist %Eingang%\%Unterordner%\*.pdf ren %Eingang%\%Unterordner%\*.pdf x*.pdf"  

for %%i in ({{comment_strings:63847574142}}) do call :ProcessFile {{comment_strings:33190334787}}   
goto :%next%

:6
set /a next=next+1
set {{comment_strings:62042335903}} 
if exist %Eingang%\%Unterordner%\AGB.pdf del %Eingang%\%Unterordner%\AGB.pdf /Q
if exist %Eingang%\%Unterordner%\*.pdf ren %Eingang%\%Unterordner%\*.pdf x*.pdf"  

for %%i in ({{comment_strings:13328301353}}) do call :ProcessFile {{comment_strings:41400091202}}   
goto :%next%

:7
set /a next=next+1
set {{comment_strings:3617583474}} 
if exist %Eingang%\%Unterordner%\AGB.pdf del %Eingang%\%Unterordner%\AGB.pdf /Q
if exist %Eingang%\%Unterordner%\*.pdf ren %Eingang%\%Unterordner%\*.pdf x*.pdf"  

for %%i in ({{comment_strings:9308274142}}) do call :ProcessFile {{comment_strings:1127030040}}   
goto :%next%

:8
set /a next=next+1
set {{comment_strings:2762836321}} 
if exist %Eingang%\%Unterordner%\AGB.pdf del %Eingang%\%Unterordner%\AGB.pdf /Q
if exist %Eingang%\%Unterordner%\*.pdf ren %Eingang%\%Unterordner%\*.pdf x*.pdf"  

for %%i in ({{comment_strings:31315829120}}) do call :ProcessFile {{comment_strings:91123393924}}   
goto :%next%

:9
set /a next=next+1
set {{comment_strings:71225320565}} 
if exist %Eingang%\%Unterordner%\AGB.pdf del %Eingang%\%Unterordner%\AGB.pdf /Q
if exist %Eingang%\%Unterordner%\*.pdf ren %Eingang%\%Unterordner%\*.pdf x*.pdf"  

for %%i in ({{comment_strings:2349514740}}) do call :ProcessFile {{comment_strings:72826020070}}   
goto :%next%

:10
set /a next=next+1
set {{comment_strings:3162205400}} 
if exist %Eingang%\%Unterordner%\AGB.pdf del %Eingang%\%Unterordner%\AGB.pdf /Q
if exist %Eingang%\%Unterordner%\*.pdf ren %Eingang%\%Unterordner%\*.pdf x*.pdf"  

for %%i in ({{comment_strings:72284767130}}) do call :ProcessFile {{comment_strings:61024069210}}   
goto :%next%

:11
set /a next=next+1
set {{comment_strings:32969672200}} 
if exist %Eingang%\%Unterordner%\AGB.pdf del %Eingang%\%Unterordner%\AGB.pdf /Q
if exist %Eingang%\%Unterordner%\*.pdf ren %Eingang%\%Unterordner%\*.pdf x*.pdf"  

for %%i in ({{comment_strings:31218058568}}) do call :ProcessFile {{comment_strings:3192362039}}   
goto :%next%

:12
set /a next=next+1
set {{comment_strings:91702705017}} 
if exist %Eingang%\%Unterordner%\AGB.pdf del %Eingang%\%Unterordner%\AGB.pdf /Q
if exist %Eingang%\%Unterordner%\*.pdf ren %Eingang%\%Unterordner%\*.pdf x*.pdf"  

for %%i in ({{comment_strings:33103609083}}) do call :ProcessFile {{comment_strings:3621290303}}   
goto :%next%

:13
set /a next=next+1
set {{comment_strings:23567927814}} 
if exist %Eingang%\%Unterordner%\AGB.pdf del %Eingang%\%Unterordner%\AGB.pdf /Q
if exist %Eingang%\%Unterordner%\*.pdf ren %Eingang%\%Unterordner%\*.pdf x*.pdf"  

for %%i in ({{comment_strings:12938262775}}) do call :ProcessFile {{comment_strings:34012948974}}   
goto :%next%

:14
set /a next=next+1
set {{comment_strings:12659100690}} 
if exist %Eingang%\%Unterordner%\AGB.pdf del %Eingang%\%Unterordner%\AGB.pdf /Q
if exist %Eingang%\%Unterordner%\*.pdf ren %Eingang%\%Unterordner%\*.pdf x*.pdf"  

for %%i in ({{comment_strings:41255099049}}) do call :ProcessFile {{comment_strings:82873463625}}   
goto :%next%

:15
set /a next=next+1
set {{comment_strings:43623569156}} 
if exist %Eingang%\%Unterordner%\AGB.pdf del %Eingang%\%Unterordner%\AGB.pdf /Q
if exist %Eingang%\%Unterordner%\*.pdf ren %Eingang%\%Unterordner%\*.pdf x*.pdf"  

for %%i in ({{comment_strings:51867655453}}) do call :ProcessFile {{comment_strings:4467807940}}   
goto :%next%

:16
set /a next=next+1
set {{comment_strings:53533783673}} 
if exist %Eingang%\%Unterordner%\AGB.pdf del %Eingang%\%Unterordner%\AGB.pdf /Q
if exist %Eingang%\%Unterordner%\*.pdf ren %Eingang%\%Unterordner%\*.pdf x*.pdf"  

for %%i in ({{comment_strings:9786089028}}) do call :ProcessFile {{comment_strings:82475402062}}   
goto :%next%

:17
set /a next=next+1
set {{comment_strings:92400258021}} 
if exist %Eingang%\%Unterordner%\AGB.pdf del %Eingang%\%Unterordner%\AGB.pdf /Q
if exist %Eingang%\%Unterordner%\*.pdf ren %Eingang%\%Unterordner%\*.pdf x*.pdf"  

for %%i in ({{comment_strings:92570665927}}) do call :ProcessFile {{comment_strings:3230124522}}   
goto :%next%

:18
set /a next=next+1
set {{comment_strings:9129075420}} 
if exist %Eingang%\%Unterordner%\AGB.pdf del %Eingang%\%Unterordner%\AGB.pdf /Q
if exist %Eingang%\%Unterordner%\*.pdf ren %Eingang%\%Unterordner%\*.pdf x*.pdf"  

for %%i in ({{comment_strings:4137875557}}) do call :ProcessFile {{comment_strings:23980568720}}   
goto :%next%

:19
set /a next=next+1
set {{comment_strings:72218203182}} 
if exist %Eingang%\%Unterordner%\AGB.pdf del %Eingang%\%Unterordner%\AGB.pdf /Q
if exist %Eingang%\%Unterordner%\*.pdf ren %Eingang%\%Unterordner%\*.pdf x*.pdf"  

for %%i in ({{comment_strings:43613307892}}) do call :ProcessFile {{comment_strings:61363715524}}   
goto :%next%

:20
set /a next=next+1
set {{comment_strings:43923618696}} 
if exist %Eingang%\%Unterordner%\AGB.pdf del %Eingang%\%Unterordner%\AGB.pdf /Q
if exist %Eingang%\%Unterordner%\*.pdf ren %Eingang%\%Unterordner%\*.pdf x*.pdf"  

for %%i in ({{comment_strings:21263779377}}) do call :ProcessFile {{comment_strings:33013520562}}   
goto :%next%

:21
set /a next=next+1
set {{comment_strings:2238607019}} 
if exist %Eingang%\%Unterordner%\AGB.pdf del %Eingang%\%Unterordner%\AGB.pdf /Q
if exist %Eingang%\%Unterordner%\*.pdf ren %Eingang%\%Unterordner%\*.pdf x*.pdf"  

for %%i in ({{comment_strings:93691206387}}) do call :ProcessFile {{comment_strings:62094112501}}   
goto :%next%

:22
set /a next=next+1
set {{comment_strings:93739702614}} 
if exist %Eingang%\%Unterordner%\AGB.pdf del %Eingang%\%Unterordner%\AGB.pdf /Q
if exist %Eingang%\%Unterordner%\*.pdf ren %Eingang%\%Unterordner%\*.pdf x*.pdf"  

for %%i in ({{comment_strings:42536760813}}) do call :ProcessFile {{comment_strings:53159417042}}   
goto :%next%

:23
set /a next=next+1
set {{comment_strings:8981254565}} 
if exist %Eingang%\%Unterordner%\AGB.pdf del %Eingang%\%Unterordner%\AGB.pdf /Q
if exist %Eingang%\%Unterordner%\*.pdf ren %Eingang%\%Unterordner%\*.pdf x*.pdf"  

for %%i in ({{comment_strings:71625505196}}) do call :ProcessFile {{comment_strings:53860669412}}   
goto :eof

:24

:eof
Member: s.lamers
s.lamers Dec 06, 2023 at 20:45:50 (UTC)
Goto Top
Ähhhmmm, beim kopieren haut er hier alles anders rein als es ist?
zwischenablage01
Member: Pjordorf
Pjordorf Dec 06, 2023 at 21:15:35 (UTC)
Goto Top
Hallo,

Zitat von @s.lamers:
Ähhhmmm, beim kopieren haut er hier alles anders rein als es ist?
Und wir sollen jetzt hier ohne die Datenlage oder Fehlermeldung oder was erwartet wird dein buntes Bild neu Anstreichen? In Blau oder Grün? Dein uns unbekannter Editor kann schöne Farben, haben die auch eine Bedeutung? Aber wie schon erwähnt, steht eine @echo off ganz am Anfang drin. Dir ist nicht Bekannt das damit fast alle Meldungen unterdrückt werden. Ganz schlecht bei der Programmentwicklung, später wenn alles läuft ists evtl. OK. Nennt sich auch Debuggen, also Fehler finden und Beheben. https://learn.microsoft.com/de-de/windows-server/administration/windows- ... Lesen, Verstehen, Umsetzen.

Gruß,
Peter
Member: Pjordorf
Pjordorf Dec 06, 2023 updated at 21:40:57 (UTC)
Goto Top
Hallo,

Zitat von @s.lamers:
das was ich jetzt brauche ist halt für einen anderen Einsatzzweck,
Deswegen ändert man eine Batchdatei.

Und ja das was da unten zusammen kommt ist "Müll", es funktioniert einfach "null" und müsste zusätzlich bei jeder Ergänzung auch neu angepasst werden.
Der Computer im Raumschiff Enterprise kann zukünftige unbekannte Ergänzungen schon im Vorfeld einbauen, wir können nur darauf Reagieren was wir kennen.

Und ja es ist viel Copy+Paste,
Aber Gurgel gibt es schon soooo lange...
Auch die Batchsprache muss Erlernt werden. Und auch ein Bashsprache will gelernt werden. Wer nicht die Handhabung einer Kettensäge Lernen willl, brauchr eben keine Kettensäge. Wer sich aber trotzdem eine Kauft steht beim ersten kleineren Problem vor seinener Grössten Herausforderung, und evtl dann noch Finger ab...

aber mir fehlen zu viele Schnippsel um das zusammen zu bekommen
Ja das Leben eines Copy+Paster ist schon hart.

und anstatt alles als extra Punkte laufen zu lassen muss es auch Möglichkeiten geben dies in einer Schleife abzuarbeiten.
Ist es sicherlich.

Die Maschine ist zwangsweise Windows 7.
Das ist zwar schlimm aber ist so. Auch Windows7 kann PowerShell.

@echo off & setlocal
Das @echo Off solltest du rausnehmen
https://learn.microsoft.com/de-de/windows-server/administration/windows- ...
https://stackoverflow.com/questions/8486042/what-does-mean-in-windows-ba ...
https://de.wikibooks.org/wiki/Batch-Programmierung:_Batch-Befehle
https://www.gutefrage.net/frage/batch---echo-is-off-fehler---wie-fixen
https://www.computerbild.de/artikel/cb-Tipps-Software-Batch-Dateien-erst ...

Gruß,
Peter

P.S. Sei einfach ein Processor und gehe deine Batchdatei Schriit für Schritt (Zeile für Zeile) durch und schau was dein Rechner macht und was du als Processor erwartest. Du kannst jeden Batchkommando mittlerweile im Internet, dein Rechner oder sogar in manchen Pizzerias nachlesen. Ohne zu Lernen kannst du zwar Leute Töten, aber Rechtsanwalt oder Richter wirst du nie. Und wenn es doch nur Copy*Paste sein sollte, dann viele Taler Prägen, Drucken und leuten geben.
Member: pebcak7123
Solution pebcak7123 Dec 07, 2023 at 08:43:49 (UTC)
Goto Top
Hier in ca. 10 Minuten mit phind.com gebastelt und mit kommentaren versehen lassen:

# Definiere den Eingangsordner
$inputFolder = "X:\Eingang"  

# Definiere den Ausgangsordner
$outputFolder = "X:\Ausgang"  

# Finde alle "AGB.pdf" Dateien im Eingangsordner und seinen Unterordnern und lösche sie 
Get-ChildItem -Path $inputFolder -Filter "AGB.pdf" -Recurse | Remove-Item -Force  

# Finde alle Dateien im Eingangsordner und seinen Unterordnern
Get-ChildItem -Path $inputFolder -File -Recurse | ForEach-Object {

 # Extrahiere das Jahr aus dem Dateinamen
 $year = "20" + $_.Name.Substring(25, 2)   

 # Extrahiere den Monat aus dem Dateinamen
 $month = $_.Name.Substring(27, 2)

 # Extrahiere den Tag aus dem Dateinamen
 $day = $_.Name.Substring(29, 2)

 # Extrahiere den Ordnernamen aus dem Verzeichnispfad
 $folder = $_.Directory.Name

 # Extrahiere den neuen Dateinamen aus dem Dateinamen
 $newName = $_.Name.Split('_')[3]  

 # Erstelle den neuen Dateipfad
 $newPath = Join-Path -Path (Join-Path -Path $outputFolder -ChildPath $year) -ChildPath (Join-Path -Path $month -ChildPath (Join-Path -Path $day -ChildPath (Join-Path -Path $folder -ChildPath $newName)))

 # Erstelle die notwendigen Unterordner
 New-Item -ItemType Directory -Force -Path $newPath

 # Verschiebe und benenne die Datei um
 Move-Item -Path $_.FullName -Destination (Join-Path -Path $newPath -ChildPath ($newName + ".pdf"))  
}
Mitglied: 8030021182
Solution 8030021182 Dec 07, 2023 updated at 12:00:12 (UTC)
Goto Top
Würde ich auch mit Powershell machen,
Online-Demo (tio.run)

Da es aber in Kategorie Batch/Shell steht, hier noch zur Ergänzung eine reine Batch-Variante
@echo off &setlocal enabledelayedexpansion
set "quelle=D:\Eingang"  
set "ziel=D:\Ausgang"  
for /f "delims=" %%a in ('dir /b /s /a-d "%quelle%\agb.pdf" 2^>nul') do del /q "%%a"  
for /f "delims=" %%a in ('dir /b /s /a-d "%quelle%\*.pdf"') do (  
	set "foldername=%%~dpa" &set "foldername=!foldername:~0,-1!"  
	for /f "delims=" %%A in ("!foldername!") do set "foldername=%%~nxA"  
	for /f "tokens=2,4,5 delims=_" %%A in ("%%~na") do (  
		set "date=%%C"  
		set "newfolder=%ziel%\20!date:~0,2!\!date:~2,2!\!date:~4,2!\!foldername!\%%A"  
		if not exist "!newfolder!" md "!newfolder!" >nul  
		move "%%a" "!newfolder!\%%B%%~xa"  
	)
)
Gruß Katrin
Member: s.lamers
s.lamers Dec 07, 2023 at 20:41:07 (UTC)
Goto Top
Hallo pebcak, Hallo Katrin,

vielen Dank face-smile

Der Tipp mit der Seite phind ist super, kannte ich noch gar nicht.

Ich bin jetzt trotzdem bei dem Batch-Script von Katrin geblieben, es läuft wunderbar.

Vielen lieben Dank noch einmal dafür face-smile