deltamk
Goto Top

Verschieben und Umbenennen mit fortlaufender Nummerierung

Hallo,

ich habe ein kleines Problem und ich bekomme es einfach nicht so hin wie ich es brauche.
Habe schon mehrere Vorschläge aus dem Forum probiert, aber es passt nicht genau zu meinem Problem.

Ich habe in meinem Quellordner c:\testquelle verschiedene Dateien mit der Endung .ABC liegen.

c:\testquelle
fdggfgh.ABC
3ed556t.ABC
3456fsf.ABC

diese solle per Bat oder cmd in einen anderen Ordner verschoben werden (c:\testziel) und dabei umbenannt werden.
Der Dateiname soll immer mit AAAAA beginnen und danach immer mit einer dreistelligen Nummer mit führenden Nullen bezeichnet werden. Die Dateiendung soll gleich der Quelldatei sein:

c:\testziel
AAAAA001.ABC
AAAAA002.ABC
AAAAA003.ABC

Wichtig wäre noch, das bei dem umbenennen geprüft wird, ob es in dem Ordner schon eine Datei mit dem Namen gibt und sonst mit der nächsten Nummer fortfährt. In dem o.g. Beispiel wäre das z.B. dann bei dem nächsten Aufruf die AAAAA004.ABC. Dies sollte zwar nicht vorkommen und die Datei in der Zwischenzeit längst abgeholt werden, aber es kann vorkommen das noch Dateien vom letzten Aufruf vorhanden sind.

Ist das mit einem Batch machbar? Wäre super wenn wir das hinkriegen.

Vielen Dank schonmal.

Gruß

Content-Key: 204437

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

Printed on: April 20, 2024 at 14:04 o'clock

Member: Endoro
Endoro Apr 04, 2013 at 16:54:16 (UTC)
Goto Top
Hallo deltamk,

hast du schon was versucht, woran man anknüpfen könnte?

Gruss!
Member: deltamk
deltamk Apr 04, 2013 at 16:58:48 (UTC)
Goto Top
Moin,

das war ja eine Blitzantwort. Ich habe mal das aus diesem Thread probiert Datei kopieren und anschliesend fortlaufend nummerieren .

Das hat aber nicht so gepasst. Vor allem weiß ich nicht wie er alle Dateien des Quellordners nimmt.
Member: miniversum
miniversum Apr 04, 2013 at 17:12:14 (UTC)
Goto Top
Hallo,

Ungetestet funktioniert das ungefär so:

@echo off
set num=1
FOR /F "delims=" %%i in ('dir /b c:\testquelle\*.ABC') do call:MoveRename "%%i"  
goto:eof

:MoveRename
set numstr=000%num%
set numstr=%numstr:~-3%
if not exist c:\testziel\AAAAA%numstr%.ABC (
move "c:\testquelle\%~1" c:\testziel\AAAAA%numstr%.ABC  
goto:eof
)
set /a num=num+1
goto:MoveRename
Member: bastla
bastla Apr 04, 2013 updated at 18:46:19 (UTC)
Goto Top
Hallo deltamk!
wie er alle Dateien des Quellordners nimmt.
Indem Du zB
set "Log=Logfilename.log"
durch
set "Log=*.ABC"
ersetzt oder gleich
for %%i in ("%Quelle%\*.ABC") do ...
verwendest?

Grüße
bastla