Frage an alle Umbenenn- und Automatisier-Profis...
Moderators: Hacker, Stefan2, white
Frage an alle Umbenenn- und Automatisier-Profis...
Hallo!
Ich habe folgendes Problem:
Ich habe einen Ordner mit 200 Untererordnern die jeweils 200 Tiffs enthalten.
Die Tiffs sind jeweils nummeriert von 000001 bis 000200.
Nun sollen die Dateien in jedem Ordner umbenannt werden.
Es handelt sich um Scans von Zweiseitigen Dokumenten, deshalb sollen alle Tiffs mit ungerader Endstelle (1,3,7,9) ein "a" ans Ende gestellt bekommen und alle mit einer geraden Endstelle ein "b" außerdem sollen alle durchnummeriert werden, so daß die Dokumente für a und b die gleiche Numer erhalten.
aus
0000001.tif
0000002.tif
0000003.tif
0000004.tif
0000005.tif
0000006.tif
...
0000199.tif
0000200.tif
soll werden
0000001a.tif
0000001b.tif
0000002a.tif
0000002b.tif
0000003a.tif
0000003b.tif
...
0000100a.tif
0000100b.tif
... und das in jedem der Unterordner...
Alle meine Versuche das Problem zu lösen, sind bisher klaglos gescheitert...
Da ich vor diesem Problem ständig wiederholt stehe, suche ich verzweifelt nach einer Möglichkeit, den Vorgang zu automatisieren.
Hat von euch vielleicht jemand ein Idee?
Ich habe folgendes Problem:
Ich habe einen Ordner mit 200 Untererordnern die jeweils 200 Tiffs enthalten.
Die Tiffs sind jeweils nummeriert von 000001 bis 000200.
Nun sollen die Dateien in jedem Ordner umbenannt werden.
Es handelt sich um Scans von Zweiseitigen Dokumenten, deshalb sollen alle Tiffs mit ungerader Endstelle (1,3,7,9) ein "a" ans Ende gestellt bekommen und alle mit einer geraden Endstelle ein "b" außerdem sollen alle durchnummeriert werden, so daß die Dokumente für a und b die gleiche Numer erhalten.
aus
0000001.tif
0000002.tif
0000003.tif
0000004.tif
0000005.tif
0000006.tif
...
0000199.tif
0000200.tif
soll werden
0000001a.tif
0000001b.tif
0000002a.tif
0000002b.tif
0000003a.tif
0000003b.tif
...
0000100a.tif
0000100b.tif
... und das in jedem der Unterordner...
Alle meine Versuche das Problem zu lösen, sind bisher klaglos gescheitert...
Da ich vor diesem Problem ständig wiederholt stehe, suche ich verzweifelt nach einer Möglichkeit, den Vorgang zu automatisieren.
Hat von euch vielleicht jemand ein Idee?
Schreibe Dir ne batchdatei mit folgendem Inhalt
Den Rest mußt Du natürlich noch vervollständigen
.
Diese Datei in das Verzeichnis kopieren und starten, dann hast Du das gewünschter ergebnis.
sheepdog
Code: Select all
ren 000001.tif 000001a.tif
ren 000002.tif 000001b.tif
ren 000003.tif 000002a.tif
ren 000004.tif 000002b.tif
ren 000005.tif 000003a.tif
ren 000006.tif 000003b.tif
ren 000007.tif 000004a.tif
ren 000008.tif 000004b.tif
ren 000009.tif 000005a.tif
ren 000010.tif 000005b.tif
ren 000011.tif 000006a.tif
ren 000012.tif 000006b.tif
ren 000013.tif 000007a.tif
ren 000014.tif 000007b.tif
ren 000015.tif 000008a.tif
ren 000016.tif 000008b.tif
ren 000017.tif 000009a.tif
ren 000018.tif 000009b.tif
ren 000019.tif 000010a.tif
ren 000020.tif 000010b.tif

Diese Datei in das Verzeichnis kopieren und starten, dann hast Du das gewünschter ergebnis.
sheepdog
multi-rename:
filename: [C10+5:8]ab
creates a counter starting at 10, stepping of 5 and a width of 8, adds 'ab'
search: (\d+)(0(a)b)?(5a(b))?(\..+)
more than one digits ($1), 0ab zero or one times ($2) with 'a' captured as $3, 5ab zero or one times ($4) with 'b' captured as $5, a dot and more than one characters ($6)
replace: $1$3$5$6
the counter ($1), if 0ab then 'a' ($3), if 5ab then 'b' ($5), extension ($6)
check regex, check subst
deitsches forum... willst uebersetzung oder genuegen die settings?
edit:
problemchen.. bzw denkfehler. Ich habs mit 20 dateien im gleichen verzeichniss probiert, bloss du hast ja ueberlappende namen in unterschiedlichen verzeichnissen und wenn man per ctrl+b die dateien auswaehlt, werden sie per pfad sortiert, dh der counter funktioniert dann nicht.
edit2: grml, dachte beim edit oben kurzfristig, dass seite a in einem ordner, seite b im anderen ist, aber es sind ja 200 ordner.. sollte also doch stimmen. probiers einfach mal aus - vergiss aber nicht die originale zu sichern
filename: [C10+5:8]ab
creates a counter starting at 10, stepping of 5 and a width of 8, adds 'ab'
search: (\d+)(0(a)b)?(5a(b))?(\..+)
more than one digits ($1), 0ab zero or one times ($2) with 'a' captured as $3, 5ab zero or one times ($4) with 'b' captured as $5, a dot and more than one characters ($6)
replace: $1$3$5$6
the counter ($1), if 0ab then 'a' ($3), if 5ab then 'b' ($5), extension ($6)
check regex, check subst

edit:

edit2: grml, dachte beim edit oben kurzfristig, dass seite a in einem ordner, seite b im anderen ist, aber es sind ja 200 ordner.. sollte also doch stimmen. probiers einfach mal aus - vergiss aber nicht die originale zu sichern

-
- Junior Member
- Posts: 66
- Joined: 2003-05-12, 18:44 UTC
Der Vorschlag von sheepdog ist IMHO wirklich brauchbar.
Wenn man diesen BAT mit einem kleinen Programm erstellt (oder - quite more better - 4DOS/4NT fährt) - erspart man sich sogar die ganze Tippserei.
Noch ein kleiner Hinweis zur Performance:
Vor jedem REN ein
IF NOT EXIST xxxxx.tiff QUIT
einbauen. Dann kann man den BAT unproblematisch auf zig-tausend Files erweitern ohne stundenlang 'File not found' sich ansehen zu müssen
Wenn man diesen BAT mit einem kleinen Programm erstellt (oder - quite more better - 4DOS/4NT fährt) - erspart man sich sogar die ganze Tippserei.
Noch ein kleiner Hinweis zur Performance:
Vor jedem REN ein
IF NOT EXIST xxxxx.tiff QUIT
einbauen. Dann kann man den BAT unproblematisch auf zig-tausend Files erweitern ohne stundenlang 'File not found' sich ansehen zu müssen

-
- Junior Member
- Posts: 66
- Joined: 2003-05-12, 18:44 UTC
@OliverPA:
Die Logik leuchtet mir ein...
Und scheint auch genau das zu sein, was ich suche...
Nur der Teil:
Allerdings muß ich mich anschließen, das mit 0 und 5.... alle Achtung, darauf muß man auch erst mal kommen!
Die Logik leuchtet mir ein...
Und scheint auch genau das zu sein, was ich suche...
Nur der Teil:
scheint bei mir nicht zu Funktionieren, oder ich mache irgendwas falsch (...was ich für sehr wahrscheinlich halte)search: (\d+)(0(a)b)?(5a(b))?(\..+)
more than one digits ($1), 0ab zero or one times ($2) with 'a' captured as $3, 5ab zero or one times ($4) with 'b' captured as $5, a dot and more than one characters ($6)
replace: $1$3$5$6
the counter ($1), if 0ab then 'a' ($3), if 5ab then 'b' ($5), extension ($6)
Allerdings muß ich mich anschließen, das mit 0 und 5.... alle Achtung, darauf muß man auch erst mal kommen!
Was genau funktioniert denn nicht?
Vielleicht hilft aber ein screenshot.
Image: http://xover.htu.tuwien.ac.at/~jamez/stuff/rename_test.gif
Uebrigens 1: subst ist doch nicht noetig, schliesslich captured die regex den gesamten dateinamen.
Uebrigens 2: Kleines script zum dateien generieren mit den Namen 00000001.tif, 00000002.tif,...
Einfach als .js speichern und entweder per default 22 dateien erstellen lassen oder als ersten parameter eine zahl angeben, zb "fgen.js 200"
Vielleicht hilft aber ein screenshot.
Image: http://xover.htu.tuwien.ac.at/~jamez/stuff/rename_test.gif
Uebrigens 1: subst ist doch nicht noetig, schliesslich captured die regex den gesamten dateinamen.
Uebrigens 2: Kleines script zum dateien generieren mit den Namen 00000001.tif, 00000002.tif,...
Einfach als .js speichern und entweder per default 22 dateien erstellen lassen oder als ersten parameter eine zahl angeben, zb "fgen.js 200"
Code: Select all
var fso = WScript.CreateObject("Scripting.FileSystemObject");
for(var i = WScript.Arguments.Unnamed.Count ? WScript.Arguments.Unnamed(0).valueOf() : 22; i; --i) {
var fname = ("00000000" + i.toString()).substr(i.toString().length, 8) + ".tif";
var f = fso.CreateTextFile(fname);
f.WriteLine("originally " + fname);
}
hmmm, also wenn das so, wie auf dem Screenshot zu sehen funktioniert, wäre es genau die Lösung für mein Problem....
Nur leider hat der Syntax in Search&Replace bei mir keinerlei Wirkung...
Ich kann mir auch nicht erklären, wo der Fehler liegt, habe alles wie angegeben ausgeführt und mehrfach überprüft, sadass ich eine falsche Eingabe ausschließen kann.
Nur leider hat der Syntax in Search&Replace bei mir keinerlei Wirkung...
Ich kann mir auch nicht erklären, wo der Fehler liegt, habe alles wie angegeben ausgeführt und mehrfach überprüft, sadass ich eine falsche Eingabe ausschließen kann.
Gibts doch nich...

Die folgenden Tests ergeben wohl wenig Sinn, sind allerdings schnell durchgefuehrt...
Probier doch mal nach einem Neustart von TC (also mit den default einstellung), RegEx und Subst. angeschaltet und in search
(.*)
1) replace leer lassen.
Ergebnis: Alle Dateinamen sollten verschwinden.
2) in replace irgendwelche Buchstaben.
Ergebnis: Die selben Buchstaben als neue Namen.
3) in replace
$1
Ergebnis: Neue Dateinamen unveraendert, dh. wie die Alten.


Die folgenden Tests ergeben wohl wenig Sinn, sind allerdings schnell durchgefuehrt...
Probier doch mal nach einem Neustart von TC (also mit den default einstellung), RegEx und Subst. angeschaltet und in search
(.*)
1) replace leer lassen.
Ergebnis: Alle Dateinamen sollten verschwinden.
2) in replace irgendwelche Buchstaben.
Ergebnis: Die selben Buchstaben als neue Namen.
3) in replace
$1
Ergebnis: Neue Dateinamen unveraendert, dh. wie die Alten.
neee, da hab ich alles richtig gemacht....
Habe aber den Fehler gefunden, der Commander wars!
Also, naja, nicht ganz der Commander, eher die Installation der neuen Version. Ich hatte die alte wincmd.ini belassen.
Hab das ganze jetzt neu installiert, inklusive neuer wincmd.ini, und es funktioniert alles, wie es soll.
Vielen Dank nochmal, Du hast mir sehr geholfen.
Gruß
Habe aber den Fehler gefunden, der Commander wars!
Also, naja, nicht ganz der Commander, eher die Installation der neuen Version. Ich hatte die alte wincmd.ini belassen.
Hab das ganze jetzt neu installiert, inklusive neuer wincmd.ini, und es funktioniert alles, wie es soll.
Vielen Dank nochmal, Du hast mir sehr geholfen.

Gruß