Frage an alle Umbenenn- und Automatisier-Profis...

German support forum

Moderators: Hacker, Stefan2, white

Post Reply
hämma
Junior Member
Junior Member
Posts: 8
Joined: 2004-03-28, 15:36 UTC

Frage an alle Umbenenn- und Automatisier-Profis...

Post by *hämma »

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?
User avatar
Sheepdog
Power Member
Power Member
Posts: 5150
Joined: 2003-12-18, 21:44 UTC
Location: Berlin, Germany
Contact:

Post by *Sheepdog »

Schreibe Dir ne batchdatei mit folgendem Inhalt

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
Den Rest mußt Du natürlich noch vervollständigen :lol: .

Diese Datei in das Verzeichnis kopieren und starten, dann hast Du das gewünschter ergebnis.

sheepdog
OliverPA
Junior Member
Junior Member
Posts: 20
Joined: 2004-01-24, 18:04 UTC
Location: Vienna, Austria

Post by *OliverPA »

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

:shock: deitsches forum... willst uebersetzung oder genuegen die settings?

edit: :oops: 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 :!:
MikeTheGuru
Junior Member
Junior Member
Posts: 66
Joined: 2003-05-12, 18:44 UTC

Post by *MikeTheGuru »

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 :wink:
OliverPA
Junior Member
Junior Member
Posts: 20
Joined: 2004-01-24, 18:04 UTC
Location: Vienna, Austria

Post by *OliverPA »

MikeTheGuru wrote:Der Vorschlag von sheepdog ist IMHO wirklich brauchbar.
:shock: Na un wozu hat denn TC ein multi-rename tool mit regex unterstuetzung?
MikeTheGuru
Junior Member
Junior Member
Posts: 66
Joined: 2003-05-12, 18:44 UTC

Post by *MikeTheGuru »

Hmm, der Trick in 5er-Stufen durchzunumerieren damit immer 0/5 abwechselnd an letzter Stelle steht...

Hut ab!
MikeTheGuru
RegNr #48208
hämma
Junior Member
Junior Member
Posts: 8
Joined: 2004-03-28, 15:36 UTC

Post by *hämma »

@OliverPA:

Die Logik leuchtet mir ein...

Und scheint auch genau das zu sein, was ich suche...

Nur der Teil:
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)
scheint bei mir nicht zu Funktionieren, oder ich mache irgendwas falsch (...was ich für sehr wahrscheinlich halte)

Allerdings muß ich mich anschließen, das mit 0 und 5.... alle Achtung, darauf muß man auch erst mal kommen!
OliverPA
Junior Member
Junior Member
Posts: 20
Joined: 2004-01-24, 18:04 UTC
Location: Vienna, Austria

Post by *OliverPA »

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"

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);
}
  
hämma
Junior Member
Junior Member
Posts: 8
Joined: 2004-03-28, 15:36 UTC

Post by *hämma »

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.
OliverPA
Junior Member
Junior Member
Posts: 20
Joined: 2004-01-24, 18:04 UTC
Location: Vienna, Austria

Post by *OliverPA »

Gibts doch nich... :shock: :?:

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.
hämma
Junior Member
Junior Member
Posts: 8
Joined: 2004-03-28, 15:36 UTC

Post by *hämma »

hmmmm, soweit funktioniert es bei mir....
hämma
Junior Member
Junior Member
Posts: 8
Joined: 2004-03-28, 15:36 UTC

Post by *hämma »

tztztz, es ja seltsam....

Ich habe es eben auf einem anderen Rechner versucht: Funktioniert ohne Probleme...

Woran kann das nun wieder liegen???
OliverPA
Junior Member
Junior Member
Posts: 20
Joined: 2004-01-24, 18:04 UTC
Location: Vienna, Austria

Post by *OliverPA »

Naja, das ist vorerst quasi ne gute Nachricht.
Vielleicht hast du aber doch zb per kopieren und einfuegen aus versehen im search-Eingabefeld ein Leerzeichen zu viel erwischt... kann leicht passieren.
hämma
Junior Member
Junior Member
Posts: 8
Joined: 2004-03-28, 15:36 UTC

Post by *hämma »

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ß
Post Reply