Vergleich von Teilen eines Dateinamens und Verschieben der Dateien
Hallo,
ich versuche gerade eine Batch-Datei zu erstellen, die mir folgende Anforderungen erfüllt:
Ich habe zwei Ordner mit tausenden pdf-Dateien. Die Dateinamen sehen so aus: xxx1234.pdf. Wobei die letzten vier Ziffern immer eine Kundennummer darstellen. Die Dateien sollen nun nach dieser Kundennummer sortiert in Ordner gesteckt werden, die nach der Kundennummer bennant sind.
Also: Datei xxx1234.pdf und Datei yyy1234.pdf sollen in den Ordner 1234 verschoben werden.
ich habe schon einige Threads mit einem ähnlichen Problem gefunden, komme aber leider nicht weiter. Über Hilfe würde ich mich sehr freuen.
Gruß ShaneDeak
ich versuche gerade eine Batch-Datei zu erstellen, die mir folgende Anforderungen erfüllt:
Ich habe zwei Ordner mit tausenden pdf-Dateien. Die Dateinamen sehen so aus: xxx1234.pdf. Wobei die letzten vier Ziffern immer eine Kundennummer darstellen. Die Dateien sollen nun nach dieser Kundennummer sortiert in Ordner gesteckt werden, die nach der Kundennummer bennant sind.
Also: Datei xxx1234.pdf und Datei yyy1234.pdf sollen in den Ordner 1234 verschoben werden.
ich habe schon einige Threads mit einem ähnlichen Problem gefunden, komme aber leider nicht weiter. Über Hilfe würde ich mich sehr freuen.
Gruß ShaneDeak
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Kommentar vom Moderator Biber am 27.04.2010 um 11:31:13 Uhr
...die nach der Kundennummer bennant sind.
Set /a rgc+=1665
Content-ID: 141557
Url: https://administrator.de/forum/vergleich-von-teilen-eines-dateinamens-und-verschieben-der-dateien-141557.html
Ausgedruckt am: 16.04.2025 um 16:04 Uhr
5 Kommentare
Neuester Kommentar
Hallo ShaneDeak und willkommen im Forum!
Sollte (ungetestet) etwa so gehen:
Das "
Grüße
bastla
[Edit] Fehlendes "%%i" in Zeile 5 ergänzt [/Edit]
Sollte (ungetestet) etwa so gehen:
@echo off & setlocal
set "Quelle=D:\Ordner1 mit tausenden pdf-Dateien"
set "Ziel=D:\PDFnachKunden"
for %%i in ("%Quelle%\*.pdf") do set "Name=%%~ni" & call :ProcessFile "%%i"
goto :eof
:ProcessFile
set "Kunde=%Name:~-4%"
md "%Ziel%\%Kunde%" 2>nul
echo move %1 "%Ziel%\%Kunde%"
goto :eof
echo
" in Zeile 11 sorgt dafür, dass die Verschiebe-Befehle nur angezeigt werden (die Kundenordner werden allerdings tatsächlich erstellt) - wenn Du ernst machen willst, einfach dieses "echo
" entfernen ...Grüße
bastla
[Edit] Fehlendes "%%i" in Zeile 5 ergänzt [/Edit]
Oder eine modifizierte Version von Datum aus Datei auslesen, Ordner nach Dateidatum erstellen und Datei dorthin kopieren oder verschieben:
Im gewünschten Verzeichnis laufen lassen. Lässt sich auch loggen.
Gruß
Snow
@Echo off
for %%a in (*) do (
if NOT "%%a"=="%0" (
Echo.
Echo Verarbeite Datei %%a
Echo.
Echo ________________________________
Echo.
call :fileworker "%%a"
)
)
goto :EOF
:fileworker
set file=%1
set fname=%~n1
set folname=%fname:~-4%
:work
if exist %folname%\NUL (
Echo Verschiebe Datei %file% nach %folname%
Echo ----
move %file% "%folname%\"%file%
) else (
Echo Erstelle Verzeichnis %folname%
Echo ----
md "%folname%"
goto work
)
Im gewünschten Verzeichnis laufen lassen. Lässt sich auch loggen.
Gruß
Snow
Zitat von @ShaneDeak:
Auch vielen Dank an Snowman25. Die Lösung funktioniert, es hat nur ein Minus-Zeichen in Zeile 17 vor der 4 gefehlt.
Das muss der Kopierer gefuttert haben. Ups Auch vielen Dank an Snowman25. Die Lösung funktioniert, es hat nur ein Minus-Zeichen in Zeile 17 vor der 4 gefehlt.
Habs ausgebessert oben
Hallo ShaneDeak!
- gemeint wäre eigentlich
gewesen (ich trag's der Vollständigkeit halber auch oben nach).
Grüße
bastla
Leider werden nur die Ordner erstellt, aber die Dateien nicht verschoben
Konnten sie mit der unvollständigen Zeile 5 auch gar nicht werden for %%i in ("%Quelle%\*.pdf") do set "Name=%%~ni" & call :ProcessFile "%%i"
Grüße
bastla