rippchenmitkraut
Goto Top

Probleme beim umbennenen der Dateierweiterung

Hallo...


als erstes möchte ich mal sagen das dies hier ein richtig gutes Forum ist, dass mir schon oft geholfen hat.

Jetzt habe ich aber ein Problem, bei dem ich einfach nicht weiterkomme. Ich soll bei mehreren Dateien die im 8+3 Format von einem Programm ausgegeben werden und von einem andern Programm gelesen werden die Dateierweiterung, also die 3 Buchstaben nach dem Punkt umbenennen. Jetzt bitte nicht gleich los brüllen, das umbenennen von Dateien ist hier doch schon abgewickelt und ich soll doch erstmal lernen mit einem Forum umzugehen. Denn mein Problem ist nicht das eigentliche umbenennen. Sondern, das es ich hierbei 1 um die Dateierweiterung handelt und 2. das ich die Dateierweiterung in fortlaufende Nummern umbenennen soll. Das heißt und jetzt kommen wir zu meinem eigentlichen Problem. Das eine Programm gibt die eine Dateien aus im 8+3 Typ also z.B. ab210106.xyz , ac210106.xyz , ad210106.xyz .... raus und ich soll nun alle Dateien die in einem Ordner sind der Reihe nach in 210106.001 , 210106.002 , 210106.003 ... umbenennen. Das soll dann eine Batch-Datei machen. Nun ist mein Problem, dass das Programm immer an die höchste Zahl anreihen soll. Also alle folgenden Dateien sollen als Dateierweiterung immer an der höchsten zahl anhängen. Es kann aber sein das ältere Dateien die nicht mehr gebraucht werden gelöscht werden, d.h. Das zwischendrin auf einmal Dateien fehlen können. Also z.b bis .043 sind alle da und dann geht es aber erst wieder mit der .052 weiter. Trotzdem soll die Batch-Datei gewährleisten, dass bei der höchsten Zahl weiter gemacht wird bis .999 und dann wieder von vorne. Ich hoffe ich habe mich halbwegs klar ausgedrückt, was mein Problem ist.

Jetzt möchte ich noch was zu den weiteren Daten sagen. Also es handelt sich um einen Server auf WindowsNT Basis und es soll keine weiter Software installiert werden (warum auch immer?!?) und der DAU soll nur einen einen Knopf drücken um die Dateien umzubenennen.

Vielen Dank schon mal
Bis neulich...

Content-Key: 25015

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

Printed on: April 19, 2024 at 07:04 o'clock

Member: maneich
maneich Feb 02, 2006 at 02:39:00 (UTC)
Goto Top
Hallo,

das ist mit einer Batch doch zu lösen.

1. Verzeichnis mit den numerischen Extensions umgekehrt sortieren
mit dir /b /oe Verzeichnis also
2. Verzeichnis zum mit ursprünglichen Extensions ändern

for /f %%i in ('dir /b /oe Verzeichnis_neu') do call:ext_num %%i

:ext_num
set i = 0
set x=%1
set y=%x:~9, 3%
:num
for /f %%k in ('dir /b Verzeichnis_alt') do (
set /a y=%y%+1
set z = %1
ren %%i Verzeichnis_neu\%z:~3, 7%%y%
)
goto EOF

Konnte das jetzt nicht testen, aber die Richtung müßte stimmen.
Ich bin hier von 2 Verzeichnissen ausgegangen, ansonsten anpassen.

MfG maneich
Member: marc-1303
marc-1303 Feb 02, 2006 at 07:25:00 (UTC)
Goto Top
Hallo RippchenMitKraut

Wenn Du, so wie ich, mit Batchen nicht so der Guru bist habe ich Dir ein Tool, dass Dir ganz bestimmt weiter hilft.

Es nennt sich RenameMaster. Fortlaufende nummerierung mit der Rename-Funktion ist möglich. Du kannst sowohl vor oder nach dem Punkt ändern.

Hier der Link zu Download: http://www.snapfiles.com/get/renamemaster.html

Ein Feedback wäre nett.

Gruss
Marc
Member: RippchenMitKraut
RippchenMitKraut Feb 02, 2006 at 12:57:26 (UTC)
Goto Top
hiho...

danke für die schnellen Antworten. Ich bin morgen wieder im Büro. Dann werde ich beides mal testen und werde dann am Montag mal genaueres feedback geben.

Lg
RMK
Member: marc-1303
marc-1303 Feb 02, 2006 at 13:01:01 (UTC)
Goto Top
Hallo RippchenMitKraut

Habe eben festgestellt, dass ich Dir eine "falschen" Link gesendet habe.
Das Programm RenameMaster kann zwar viel; Extensions hochzählen aber nicht.

Mit "Bulk Rename Utility" sollte es aber möglich sein. Hier der Link.

http://www.bulkrenameutility.co.uk/Screenshots.php

Gruss
Marc
Member: RippchenMitKraut
RippchenMitKraut Feb 05, 2006 at 17:12:47 (UTC)
Goto Top
Tach,

danke nochmal für die schnelle Antwort. Deine Einführung hat mir sehr geholfen. Nur soll ich jetzt die Batchdatei so abändern, dass sie alle Dateien in einem Ordner umbenennt. Also immer die Extension raufzählt und zwar immer dann wen sie ausgeführt wird. Dabei ist es dann egal, ob sie vorhandene Nummerierungen durcheinander bringt. ich habe es leider nicht hin bekommen, das er die letzten 3 (die Extension) umbennent und dann bei 999 wieder anfängt. Soll ich das über tokens machen?!? Wäre cool wenn du antwortest, danke schonmal.

lg
RMK

p.s. das empfohlene Tool darf ich leider nicht benutzen, weil aus Sicherheitsgründen keine Software auf den Rechner installiert werden darf.
Member: maneich
maneich Feb 05, 2006 at 19:02:09 (UTC)
Goto Top
Hallo,


for /f "tokens=2 delims=." %%i in ('dir /b /o-e Verzeichnis_neu') do call:ext_num %%i
goto eof

:ext_num
set y=%1
for /f "tokens=1,2 delims=." %%k in ('dir /b /od Verzeichnis_alt') do (
if %y%==999 set y=0
set /a y=%y%+1
set z = %%k
move /y Verzeichnis_alt\%%k.%%l Verzeichnis_neu\%z:~3%.%y%
)
goto eof


Teste das mal.


MfG maneich
Member: RippchenMitKraut
RippchenMitKraut Feb 05, 2006 at 21:16:57 (UTC)
Goto Top
Nabend...

super vielen dank für deine schnelle antwort. Ich werde mich gleich Morgen dran machen. Ich brauch es zwar auch nur für ein Verzeichniss aber das werd ich dann schon hinbekommen.. face-smile
danke nochmal
lg
RMK
Member: RippchenMitKraut
RippchenMitKraut Feb 06, 2006 at 20:09:40 (UTC)
Goto Top
Nabend,

so ich hab mich mal weiter dran gemacht und bin bis hier gekommen:

rem @echo off

set n=001

for %%i in (C:\...\Test\*.*) do call:ext_num %%i
:ext_num
set i=0
set z=%1
if %n%==999 set n=001
ren C:\temp\test\%z:~3, z%%n%
set /a n=%n%+1
)

rem echo off

das echo hab ich für die Anzeige in cmd raus genommen. So mein Problem ist jetzt die ren- Zeile die will nicht da sagt er immer syntaxerror?!? wäre cool wenn du dir die Sache nochmal anschaun könntest.
Ein weiters Problem das sich ergeben hat ist das er zwar zählt aber halt nur 1,2,3,4,.. und nicht 001,002,003.... und da wollte ich mal fragen ob ich das mit 3 if abfragen machen kann und ob man in Batch so was abfragen kann wie wenn die zahl 1 stellig ist dann hänge 00 davor, wenn sie 2 stellig ist hänge 0 davor... schau mal vielleicht hast du ja da eine Idee...
danke schon mal
lg
RMK
Member: Biber
Biber Feb 06, 2006 at 20:54:37 (UTC)
Goto Top
Moin RMK,
ersetz mal bitte den Batch hiermit:
@echo off & setlocal
set /a "n=1"
for %%i in (C:\...\Test\*.*) do call:ext_num %%~ni %%~xi
:ext_num
if %n%==999 set /a "n=1"
Set "cn=000%n%"
Set "cn=%cn:~-3,3%"
ren C:\temp\\test\%1%2 %1.%cn%
set /a n=%n%+1
)


HTH Biber
Member: RippchenMitKraut
RippchenMitKraut Feb 07, 2006 at 09:39:32 (UTC)
Goto Top
hiho..

habs versucht.. aber in deiner ren zeile ist ein Fehler .. da kommt immer syntaxerror...

lg
RMK
Member: Biber
Biber Feb 07, 2006 at 09:50:11 (UTC)
Goto Top
Uupps, sorry, RMK,

ich hatte eine Tilde ("~") vergessen... habs oben korrigiert.
Okay, getestet hab ich es trotzdem nicht - aber vom Bauch her sollte es laufen.

Gruß Biber
Member: RippchenMitKraut
RippchenMitKraut Feb 07, 2006 at 10:14:29 (UTC)
Goto Top
hiho...

erstmal Danke für deine schnelle Antwort.
soweit so gut.. nur er benennt jetzt auch den ordner mit um!! was nicht so sein sollte!?!
lg
RMK
Member: Biber
Biber Feb 07, 2006 at 10:30:37 (UTC)
Goto Top
*lacht*.. Shit happens... sorry.

Erklär bitte noch mal in zwei Zeilen Deine Verzeichnisstruktur... die habe ich offensichtlich falsch verstanden.
Wie heißt denn das "C:\...\Test\*.*" nun wirklich?
Und von wo rufst Du den Batch auf?

LG zurück
Biber
Member: RippchenMitKraut
RippchenMitKraut Feb 07, 2006 at 10:44:43 (UTC)
Goto Top
hiho...

also sag wir mal die Datein liegen in C:\temp\test\*.* und die Batch in C:\temp\batch\ und die batch benennt alle datein um und als letztes auch noch den Ordner. Also wenn ich 15 Datein habe dann heisst der Ordner dann .016

lg
RMK
Member: Biber
Biber Feb 07, 2006 at 12:28:01 (UTC)
Goto Top
Okay, ich glaub, ich habe es jetzt verstanden.
Neuer Versuch - bitte ersetzen:

ALT: for %%i in (C:\...\Test\*.*)
NEU: For /F %%i in ('dir /b /A:-d C:\...\Test\*.*')

Der DIR-Parameter "/A-d" bedeutet "nur Dateien, keine Verzeichnisse".

Danke für Deine Geduld. face-wink

Biber
Member: RippchenMitKraut
RippchenMitKraut Feb 09, 2006 at 08:16:25 (UTC)
Goto Top
Moin,

sorry, wenn ich mich erst jetzt melde. Der neuste Stand ist, dass unter xp alles läuft. Achja ich habe das problem der umbenennung mit einem goto :end nach der schleife gelöst. Aber auf einem NT Rechner läuft es nicht so wie es sollte. Irgendwie mag er die Zeile Set "cn=%cn:~-3,3% nicht. Die führt er nicht aus. Was dazu führt, dass die Datei nach dem Punkt nichts zustehen hat also: aa000000. und das ist ja nicht so ganz Sinn der Sache. Ich habe versucht das mit 3 if Schleifen zu umgehen aber er mag <= nicht da sagt er immer Syntayfehler. Das sollte doch eigentlich möglich sein. Könntest du mir da nochmal helfen. Danke
lg
RMK
Member: RippchenMitKraut
RippchenMitKraut Feb 09, 2006 at 10:30:07 (UTC)
Goto Top
hi

Letzter Stand

:ext_num
if %n%==999 set /a "n=1"
set "cn=oo%n%"
if %n% LEQ 9 set "cn=00%n%"
If (%n% GTR 9) & (n LEQ 99) set "cn==%n%
if %n% GTR 99 set "cn=%n%"

ren C:..................... ................

nur das und(&) will nicht !?! face-smile kannst du mir da helfen oder mit sagen wie das mit else geht?

lg
RMK
Member: Biber
Biber Feb 09, 2006 at 13:49:59 (UTC)
Goto Top
Also, RMK,
ich habe keine NT-Installation mehr im näheren Umkreis, und habe nur noch vage Vermutungen über die Unterschiede im CMD.exe-verhalten unter NT und W2000/XP.

Aber wenn die NT-CMD.exe
- ein Set /A verarbeiten, also schon rechnen kann (Test am Prompt: "Set /a 17+4")
- die Vergleichsoperatoren LEQ und GTR schon kennt (Test: "if 1 LEQ 3 echo hallo")

...dann wäre mein nächster Versuch:
...
if %n%==999 set /a "n=1"
if %n% LEQ 9 set "cn=00%n%"
If %n% GTR 9 if %n% LEQ 99 set "cn=0%n%
If %n% GTR 99 set "cn=%n%

ren C:.....

HTH Biber