BATCH - anhand von Dateinamen neue Verzeichnisse erstellen
Hallo,
ich versuche nun seit Stunden, eine Lösung für mein Problem in Eurem Forum zu finden. Habe da zwar einiges gefunden, aber bei mir funktioniert das alles nicht.
Problemstellung:
Es gibt eine Datei "Data". In dieser befinden verschiedenartigste Dateien. Diese Dateien möchte ich inhaltlich zusammenfassen und in eigene Ordner speichern.
Beispiel:
Datensatz (Dateiname): 4166078_2023_Nr.005_Kontoauszug_vom_2023.05.31_20230612102201.pdf
ich möchte diese Datei nach Data\Kontoauszug\2023 verschieben. Dazu suche ich zuerst nach "Kontoauszug" im Dateinamen.
Wenn gefunden, dann verwende ich diesen Namen und erstelle mit den Stellen 9-12 des Dateinamens ein Unterverzeichnis, in welches dann diese Datei verschoben werden soll.
Das ist mein Code hierfür:
Könnt ihr mir bitte dabei helfen, dies so hinzubekommen. Dafür bin ich Euch schon im Vorhinein dankbar.
LG waholin
ich versuche nun seit Stunden, eine Lösung für mein Problem in Eurem Forum zu finden. Habe da zwar einiges gefunden, aber bei mir funktioniert das alles nicht.
Problemstellung:
Es gibt eine Datei "Data". In dieser befinden verschiedenartigste Dateien. Diese Dateien möchte ich inhaltlich zusammenfassen und in eigene Ordner speichern.
Beispiel:
Datensatz (Dateiname): 4166078_2023_Nr.005_Kontoauszug_vom_2023.05.31_20230612102201.pdf
ich möchte diese Datei nach Data\Kontoauszug\2023 verschieben. Dazu suche ich zuerst nach "Kontoauszug" im Dateinamen.
Wenn gefunden, dann verwende ich diesen Namen und erstelle mit den Stellen 9-12 des Dateinamens ein Unterverzeichnis, in welches dann diese Datei verschoben werden soll.
Das ist mein Code hierfür:
@echo off & setlocal
REM 4166078_2023_Nr.005_Kontoauszug_vom_2023.05.31_20230612102201
set "Quelle=W:\Programmierung\Batch\Data"
set "Typ=pdf"
set "Ziel=W:\Programmierung\Batch"
set "SearchKey=Konto"
for %%i in ("%Quelle%\*.%Typ%") do (
for /f %%a in ("%%~ni" | findstr /c:"%SearchKey%") do (
pause
set "Ordner=Konto"
set "Unterordner=2024"
rem set "Unterordner=%tokens=9-12%
)
call ProcessFile "%%i"
pause
)
goto :eof
:ProcessFile
set "ZielOrdner=%Ziel%\%Ordner%\%Unterordner%"
xcopy %1 %ZielOrdner"
move %1 %ZielOrdner"
pause
:eof
Könnt ihr mir bitte dabei helfen, dies so hinzubekommen. Dafür bin ich Euch schon im Vorhinein dankbar.
LG waholin
Please also mark the comments that contributed to the solution of the article
Content-ID: 668070
Url: https://administrator.de/contentid/668070
Printed on: October 13, 2024 at 10:10 o'clock
2 Comments
Latest comment
@echo off & setlocal
set "Quelle=W:\Programmierung\Batch\Data"
set "Typ=pdf"
set "SearchKey=Kontoauszug"
for %%a in ("%quelle%\*%Searchkey%*.%typ%") do (
for /f "tokens=2 delims=_" %%b in ("%%~na") do (
if not exist "%quelle%\%Searchkey%\%%b" md "%quelle%\%Searchkey%\%%b" >nul
move "%%a" "%quelle%\%Searchkey%\%%b\"
)
)