Verschiedene Dateien aus Unterordner mit Umbenennung verschieben
Hallo Batch-Profis,
ich habe eine Anforderung auf dem Tisch liegen die ich schlichtweg nicht schaffe und bräuchte Eure Hilfe. Es gibt verschiedene PDF Dateien in verschiedenen Unterordner die alle in einen Ausgabe Ordner incl. Datum verschoben werden sollten. Das Problem dabei ist das in den Ordnernamen Informationen stecken die sich dann im Filenamen bzw. in den Outputordnern widerspiegeln sollten.
Ein Beispiel:
Dateien/Ordnerstruktur:
D:\Programme\Ausgabe\Batch10#\M01J12\ABC\SECU.pdf
D:\Programme\Ausgabe\Batch09#\M01J12\ABC\A100\SECU.pdf
D:\Programme\Ausgabe\Batch07#\M01J12\DEF\ASF.pdf
D:\Programme\Ausgabe\Batch07#\M12J11\XYZ\BRA\ASF.pdf
D:\Programme\Ausgabe\Batch03#\M12J11\XYZ\ASF.pdf
- Unterordner BatchXY# - hier verändern sich die Zahlen – prinzipiell sind Zahlen von Batch01# bis Batch25# möglich.
- M01J12 steht für Monat 01 (Januar) und Jahr 2012 … diese Information ist wichtig und sollte dementsprechend geordnet werden.
- ABC/DEF/XYZ: Kennzeichnung der Abteilung – hier kann „alles“ vorkommen
- A100/BRA: Kennzeichnung der Unterabteilung (nicht überall vorhanden) - hier kann „alles“ vorkommen
- *.pdf – PDF Dateien mit unterschiedlichen Namen je nach darin enthaltene Auswertung
--> Ausgabe sollte folgendermaßen erfolgen – der Monats/Jahr Ordner sollte erstellt werden.
D:\Programme\SORTIERUNG\M01J12\SECU_ABC.PDF
D:\Programme\SORTIERUNG\M01J12\SECU_ABC_A100.pdf
D:\Programme\SORTIERUNG\M01J12\ASF_DEF.pdf
D:\Programme\SORTIERUNG\M12J11\ASF_XYZ_BRA.pdf
D:\Programme\SORTIERUNG\M12J11\ASF_XYZ.pdf
Die Dateien sollten verschoben werden und am alten Platz nicht mehr vorhanden sein.
Hat hier wer eine Idee für ein Batchscript?
Danke vorab für Eure Hilfe,
Lakslo
ich habe eine Anforderung auf dem Tisch liegen die ich schlichtweg nicht schaffe und bräuchte Eure Hilfe. Es gibt verschiedene PDF Dateien in verschiedenen Unterordner die alle in einen Ausgabe Ordner incl. Datum verschoben werden sollten. Das Problem dabei ist das in den Ordnernamen Informationen stecken die sich dann im Filenamen bzw. in den Outputordnern widerspiegeln sollten.
Ein Beispiel:
Dateien/Ordnerstruktur:
D:\Programme\Ausgabe\Batch10#\M01J12\ABC\SECU.pdf
D:\Programme\Ausgabe\Batch09#\M01J12\ABC\A100\SECU.pdf
D:\Programme\Ausgabe\Batch07#\M01J12\DEF\ASF.pdf
D:\Programme\Ausgabe\Batch07#\M12J11\XYZ\BRA\ASF.pdf
D:\Programme\Ausgabe\Batch03#\M12J11\XYZ\ASF.pdf
- Unterordner BatchXY# - hier verändern sich die Zahlen – prinzipiell sind Zahlen von Batch01# bis Batch25# möglich.
- M01J12 steht für Monat 01 (Januar) und Jahr 2012 … diese Information ist wichtig und sollte dementsprechend geordnet werden.
- ABC/DEF/XYZ: Kennzeichnung der Abteilung – hier kann „alles“ vorkommen
- A100/BRA: Kennzeichnung der Unterabteilung (nicht überall vorhanden) - hier kann „alles“ vorkommen
- *.pdf – PDF Dateien mit unterschiedlichen Namen je nach darin enthaltene Auswertung
--> Ausgabe sollte folgendermaßen erfolgen – der Monats/Jahr Ordner sollte erstellt werden.
D:\Programme\SORTIERUNG\M01J12\SECU_ABC.PDF
D:\Programme\SORTIERUNG\M01J12\SECU_ABC_A100.pdf
D:\Programme\SORTIERUNG\M01J12\ASF_DEF.pdf
D:\Programme\SORTIERUNG\M12J11\ASF_XYZ_BRA.pdf
D:\Programme\SORTIERUNG\M12J11\ASF_XYZ.pdf
Die Dateien sollten verschoben werden und am alten Platz nicht mehr vorhanden sein.
Hat hier wer eine Idee für ein Batchscript?
Danke vorab für Eure Hilfe,
Lakslo
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 178068
Url: https://administrator.de/forum/verschiedene-dateien-aus-unterordner-mit-umbenennung-verschieben-178068.html
Ausgedruckt am: 11.05.2025 um 04:05 Uhr
5 Kommentare
Neuester Kommentar
moin Lakslo,
insofern unter dem Ordner Ausgabe nur diese PDF dateien sind könnte es so gehen.
Wenn Du die @echo entfernst ist der Batch scharf. Sonst zeigt er nur an.
Gruß Phil
insofern unter dem Ordner Ausgabe nur diese PDF dateien sind könnte es so gehen.
@echo off &setlocal
set /a Deep = 5
set "Quelle=D:\Programme\Ausgabe\*.pdf"
set "Ziel=D:\Programme\SORTIERUNG\"
for /f "delims=" %%i in ('dir /s /b "%Quelle%" ') do for /f "tokens=%Deep%* delims=\" %%a in ("%%~dpi") do if "%%b" neq "" (set "Bname=\%%b"
setlocal enabledelayedexpansion
set "Bname=!Bname:\=_!"
set "Bname=!Bname:~,-1!"
@echo if not exist "%Ziel%%%a" md "%Ziel%%%a"
@echo move "%%i" "%Ziel%%%a\%%~ni!Bname!%%~xi"
endlocal
)
pause
Wenn Du die @echo entfernst ist der Batch scharf. Sonst zeigt er nur an.
Gruß Phil
moin Lakslo,
eine Ebene zu Früh? Hhmmm. Laut Anforderung ist doch (wenn Root Ebene 1) Ebene 5 der Zielname - ach seh grad hast noch gebastelt...
das Filterst Du mit einer zusätzlichen Suchzeichenfolge mit Findstr heraus.
<code type plain>findstr /r /c:"\<Batch[\ ]*[0-9]*#\>"
würde rein TheoreTisch ausreichen, aber so wie oben ist bissel sicherer
Du könntest auch noch eine For /d-schleife davorschachteln aber das geht schon so
Gruß Phil
eine Ebene zu Früh? Hhmmm. Laut Anforderung ist doch (wenn Root Ebene 1) Ebene 5 der Zielname - ach seh grad hast noch gebastelt...
das Filterst Du mit einer zusätzlichen Suchzeichenfolge mit Findstr heraus.
@echo off &setlocal
set /a Deep = 5
set "Quelle=D:\Programme\Ausgabe\*.pdf"
set "Ziel=D:\Programme\SORTIERUNG\"
set Filter= /r /c:"[\\]Batch[\ ]*[1-2][0-9]#[\\]M[0-9][0-9]J[0-9][0-9]"
:: Filter nach regulärem Ausdruck Hilfe unter Findstr /?
for /f "delims=" %%i in ('dir /s /b "%Quelle%" ^|findstr %Filter% ') do for /f "tokens=%Deep%* delims=\" %%a in ("%%~dpi") do if "%%b" neq "" (set "Bname=\%%b"
setlocal enabledelayedexpansion
set "Bname=!Bname:\=_!"
set "Bname=!Bname:~,-1!"
@echo if not exist "%Ziel%%%a" md "%Ziel%%%a"
@echo move "%%i" "%Ziel%%%a\%%~ni!Bname!%%~xi"
endlocal
)
pause
<code type plain>findstr /r /c:"\<Batch[\ ]*[0-9]*#\>"
würde rein TheoreTisch ausreichen, aber so wie oben ist bissel sicherer
Du könntest auch noch eine For /d-schleife davorschachteln aber das geht schon so
Gruß Phil