Kommentar vom Moderator Biber am 27.04.2010 um 11:31:13 Uhr
...die nach der Kundennummer bennant sind.
Set /a rgc+=1
665

gelöst Vergleich von Teilen eines Dateinamens und Verschieben der Dateien

Mitglied: ShaneDeak

ShaneDeak (Level 1)

27.04.2010, aktualisiert 11:31 Uhr, 2947 Aufrufe, 5 Kommentare

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
Mitglied: bastla
27.04.2010 um 10:42 Uhr
Hallo ShaneDeak und willkommen im Forum!

Sollte (ungetestet) etwa so gehen:
01.
@echo off & setlocal
02.
set "Quelle=D:\Ordner1 mit tausenden pdf-Dateien"
03.
set "Ziel=D:\PDFnachKunden"
04.

05.
for %%i in ("%Quelle%\*.pdf") do set "Name=%%~ni" & call :ProcessFile "%%i"
06.
goto :eof
07.

08.
:ProcessFile
09.
set "Kunde=%Name:~-4%"
10.
md "%Ziel%\%Kunde%" 2>nul
11.
echo move %1 "%Ziel%\%Kunde%"
12.
goto :eof
Das "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]
Mitglied: Snowman25
27.04.2010 um 11:05 Uhr
Oder eine modifizierte Version von Datum aus Datei auslesen, Ordner nach Dateidatum erstellen und Datei dorthin kopieren oder verschieben:
01.
@Echo off
02.
for %%a in (*) do (
03.
	if NOT "%%a"=="%0" (
04.
		Echo.
05.
		Echo Verarbeite Datei %%a
06.
		Echo.
07.
		Echo ________________________________
08.
		Echo.
09.
		call :fileworker "%%a"
10.
	)
11.
)
12.
goto :EOF
13.

14.
:fileworker
15.
set file=%1
16.
set fname=%~n1
17.
set folname=%fname:~-4%
18.
:work
19.
if exist %folname%\NUL (
20.
	Echo Verschiebe Datei %file% nach %folname%
21.
	Echo ----
22.
	move %file% "%folname%\"%file% 
23.
) else (
24.
	Echo Erstelle Verzeichnis %folname%
25.
	Echo ----
26.
	md "%folname%"
27.
	goto work
28.
)
Im gewünschten Verzeichnis laufen lassen. Lässt sich auch loggen.
Gruß
Snow
Mitglied: ShaneDeak
27.04.2010 um 12:39 Uhr
Zitat von bastla:
Hallo ShaneDeak und willkommen im Forum!

Sollte (ungetestet) etwa so gehen:
01.
@echo off & setlocal
02.
> set "Quelle=D:\Ordner1 mit tausenden pdf-Dateien"
03.
> set "Ziel=D:\PDFnachKunden"
04.
> 
05.
> for %%i in ("%Quelle%\*.pdf") do set "Name=%%~ni" & call :ProcessFile
06.
> goto :eof
07.
> 
08.
> :ProcessFile
09.
> set "Kunde=%Name:~-4%"
10.
> md "%Ziel%\%Kunde%" 2>nul
11.
> echo move %1 "%Ziel%\%Kunde%"
12.
> goto :eof
13.
> 
Das "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

Vielen Dank für den Vorschlag. Leider werden nur die Ordner erstellt, aber die Dateien nicht verschoben (echo habe ich entfernt).


Auch vielen Dank an Snowman25. Die Lösung funktioniert, es hat nur ein Minus-Zeichen in Zeile 17 vor der 4 gefehlt. ;)
Mitglied: Snowman25
27.04.2010 um 12:43 Uhr
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

Habs ausgebessert oben
Mitglied: bastla
27.04.2010 um 13:16 Uhr
Hallo ShaneDeak!
Leider werden nur die Ordner erstellt, aber die Dateien nicht verschoben
Konnten sie mit der unvollständigen Zeile 5 auch gar nicht werden - gemeint wäre eigentlich
for %%i in ("%Quelle%\*.pdf") do set "Name=%%~ni" & call :ProcessFile "%%i"
gewesen (ich trag's der Vollständigkeit halber auch oben nach).

Grüße
bastla
Titel: Vergleich von Teilen eines Dateinamens und Verschieben der Dateien
Content-ID: 141557
Art des Inhalts: Frage
Ausgedruckt am: 22.05.2019 um 21:30:29 Uhr
URL: https://administrator.de/contentid/141557