Supportnet Computer
Planet of Tech

Supportnet / Forum / Windows98

Batchprogramm





Frage

Hallo mitenander, ich habe folgendes "kleine" Problem: Ich habe einige 100 Bilddateien, die mit dem Namen [b] GR.001[/b] bis [b] GR.xxx[/b] ( [u] mit PUNKT[/u]) fortlaufend durchnummeriert sind. Die Dateien sollen einen [u]fortlaufend nummerierten[/u] Namen wie [b] GR001.TIF[/b] bekommen. Es ist nun sehr mühsam alle Dateien per Hand umzubenennen. Kann mir dazu jemand eine einfache Lösung vorschlagen? Viele Grüße Ralf

Antwort 1 von RMG

Hallo miteinander,

habe mir eine Lösung mit QBASIC geschrieben.
Es ist zwar nicht komfortabel, da ich den Wert Zahl wohl immer neu eingeben muß(?), aber es erfüllt seinen Zweck.
Hier für interessierte meine Lösung:
a = 0
b = 0
c = 0
e$ = "GR"
f$ = "GR."
g$ = ".TIF"
FOR y = y + 1 TO
Zahl
a = a + 1
IF a > 9 THEN b = b + 1
IF b > 9 AND a > 9 THEN c = c + 1
IF a > 9 THEN a = 0
IF b > 9 THEN b = 0
IF y =
Zahl + 1 THEN END
a$ = LTRIM$(STR$(a))
b$ = LTRIM$(STR$(b))
c$ = LTRIM$(STR$(c))
h$ = c$ + b$ + a$
i$ = f$ + h$
j$ = e$ + h$ + g$
rem PRINT "benenne " + i$ + " in " + j$ + " um"
NAME i$ AS j$
NEXT y


Viele Grüße
Ralf

Antwort 2 von manei

Hallo,

einfache Lösung:

Mit

dir /b Laufw.Verzeichnis>Datei.txt

Schreibst Du alle Datein nur mit dem Namen ind eine Datei und kannst dann alle Namen in einer .vbs-Datei abarbeiten mit:

[???.vbs]
------------ab hier
set fs = CreateObject("Scripting.FileSystemObject")
x="dateiname.txt"
y="Verzeichnispfad"
set dat1 = fs.OpenTextFile(x, 1, vbTrue)
i=0

do
ix="000"
i=i+1
datx=dat1.ReadLine
ix= left(ix, (3 - len(i)))&i
fs.CopyFile y&""&datx y&"GR"&ix&".tif"
fs.DeleteFile(y&""&datx)
loop until dat1.AtEndOfStream = vbTrue
dat1.close
----------------bis hier

In diesem Beispiel werden die Dateien in den gleichen Ordner mit neuen Namen kopiert und die alte File gelöscht.

Du kannst aber zunächst einen neuen Ordner erstellen und dorthin kopieren. Dazu mußt du dann noch eine Zeile hinzufügen mit
z=neuer Verzeichnispfad

und fs.Delete wegnehmen und

fs.CopyFile y&""&datx z&"GR"&ix&".tif" an stelle der o.a. einfügen.

Natürlich müssen "dateiname" und "Verzeichnispfad" angepaßt werden.

MfG maneich

Antwort 3 von manei

Hallo,

hier werden die Backslashes verschluckt, übertall da wo ich ein Nummernzeichen mache, muß ein backslash gesetzt werden

fs.CopyFile y&"#"&datx y&"#GR"&ix&".tif"
fs.DeleteFile(y&"#"&datx)

MfG maneich

Antwort 4 von TheBlackBird_

Hi,

Warum soviel Kopfzerbrechen? Viele Programme haben das doch schon eingebaut. Irfanview z.B. hat auch eine Batch-Konvertierungs/-Rename-Funktion.

btw: @manei
Bis es anders geht, kannst Du Dir in puncto Backslash damit helfen, dass Du immer wenn Du einen brauchst, zwei schreibst. Dann wird das hier im Forum imho auch angezeigt.

fs.CopyFile y&"\"&datx y&"\GR"&ix&".tif"
fs.DeleteFile(y&"\"&datx)


Cu TheBlackBird ®

Antwort 5 von painkiller95

finde ich toll, dass RMG das mit einem Script selber gelöst hat!

viel zu wenig PC Nutzer interessieren sich heutzutage noch für Batchjobs und Scriptprogrammierung. Dabei hat damit das PC Zeitalter angefangen, dass man an diesen Kisten alles selber programmieren konnte ....

Antwort 6 von vadder

früher hatten wir auch noch einen kaiser

es gibt fertige arbeit

vadder

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: