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
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
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
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 ®
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 ....
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
es gibt fertige arbeit
vadder

