Automatisches umbenennen???
Moderators: Hacker, Stefan2, white
Hoffentlich habe ich dein Anliegen dieses Mal richtig verstanden 
Die ersten drei Zeichen sind beliebig, die nächsten drei Zeichen wechseln und der Rest ist immer gleich...
Hier eine kleine Batch-Datei:
Du musst in der oberen Zeile SET Target= noch deinen Zielpfad eingeben und die Datei unter Dateiname.cmd abspeichern. Funzt leider erst ab Win2000.
Ich kenne mich mit Batch-Programmierung nicht wirklich aus (habe gerade schön per Kommandozeile FOR /? usw. gearbeitet), daher sind folgende Einschränkungen:
Quell- und Zielordner müssen auf dem selben Laufwerk liegen und die *.cmd-Datei muss im Quellordner liegen.
Das könnte man natürlich auch noch verfeinern und per Startermenü aus dem TC mit Pfadübergabe anpassen usw.
Falls es das immer noch nicht sein sollte, gebe ich mich geschlagen und ich kann dir nicht folgen
Grüße,
Murphy

Die ersten drei Zeichen sind beliebig, die nächsten drei Zeichen wechseln und der Rest ist immer gleich...
Hier eine kleine Batch-Datei:
Code: Select all
CLS
@ECHO OFF
SET Tmpfile=%TEMP%\KUKULKAN.TMP
SET Target=Zielpfad (z. B. E:\Ziel\Ablage)
SET File=-063WW.12DE
DIR /B > %Tmpfile%
CD %Target%
FOR /F "delims=- tokens=2" %%n IN (%Tmpfile%) DO REN "???-%%n%File%" "000-%%n%File%"
SET Target=
SET File=
DEL %Tmpfile%
Ich kenne mich mit Batch-Programmierung nicht wirklich aus (habe gerade schön per Kommandozeile FOR /? usw. gearbeitet), daher sind folgende Einschränkungen:
Quell- und Zielordner müssen auf dem selben Laufwerk liegen und die *.cmd-Datei muss im Quellordner liegen.
Das könnte man natürlich auch noch verfeinern und per Startermenü aus dem TC mit Pfadübergabe anpassen usw.
Falls es das immer noch nicht sein sollte, gebe ich mich geschlagen und ich kann dir nicht folgen

Grüße,
Murphy
In meinem wirren Kopf habe ich mir sowas vorgestellt.
Im TCMD liste ich mir beide Dateien auf
die einen im rechten Fenster die anderem im Linken Fenster.
Jetzt lässt man die beiden Verzeichnisse miteinander vergleichen.
Das Programm findet Übereinstimmungen in den Dateinamen, bis auf
die ersten 3 Zahlen. Jetzt müsste man auf Knopfdruck sagen konnen:
Übertrage die Namen aus dem rechten ins linke Fenster, oder auch umgekehrt.
Im TCMD liste ich mir beide Dateien auf
die einen im rechten Fenster die anderem im Linken Fenster.
Jetzt lässt man die beiden Verzeichnisse miteinander vergleichen.
Das Programm findet Übereinstimmungen in den Dateinamen, bis auf
die ersten 3 Zahlen. Jetzt müsste man auf Knopfdruck sagen konnen:
Übertrage die Namen aus dem rechten ins linke Fenster, oder auch umgekehrt.
Hallo, Murphy.
Ich glaube, jetzt benennst du genau falsch herum um, die Quelldateinamen haben die 000 vorne, die Zeildateien irgendwelche 3-stelligen Zahlen. Guckst du vielleicht nochmal hier im allerersten Posting.
Außerdem schreibt kukulkan später, daß es keine Regel gibt, nach der umbenannt wird. Wie willst du da eine For-Schleife basteln, die den Zielnamen aus dem Quellnamen ableitet?
Oder, übersehe ich die Regel nur? (Wo doch kukulkan selbst sagt, es gibt keine?)
Karl
Ich glaube, jetzt benennst du genau falsch herum um, die Quelldateinamen haben die 000 vorne, die Zeildateien irgendwelche 3-stelligen Zahlen. Guckst du vielleicht nochmal hier im allerersten Posting.
Außerdem schreibt kukulkan später, daß es keine Regel gibt, nach der umbenannt wird. Wie willst du da eine For-Schleife basteln, die den Zielnamen aus dem Quellnamen ableitet?
Oder, übersehe ich die Regel nur? (Wo doch kukulkan selbst sagt, es gibt keine?)
Karl
MX Linux 21.3 64-bit xfce, Total Commander 11.50 64-bit
The people of Alderaan keep on bravely fighting back the clone warriors sent out by the unscrupulous Sith Lord Palpatine.
The Prophet's Song
The people of Alderaan keep on bravely fighting back the clone warriors sent out by the unscrupulous Sith Lord Palpatine.
The Prophet's Song
Jetzt hat es auch bei mir "Klick" gemachtkukulkan wrote: Im TCMD liste ich mir beide Dateien auf
die einen im rechten Fenster die anderem im Linken Fenster.
Jetzt lässt man die beiden Verzeichnisse miteinander vergleichen.
Das Programm findet Übereinstimmungen in den Dateinamen, bis auf
die ersten 3 Zahlen. Jetzt müsste man auf Knopfdruck sagen konnen:
Übertrage die Namen aus dem rechten ins linke Fenster, oder auch umgekehrt.

Ich versuche mich nochmal, mal sehen, ob ich es hinbekomme...
2Karlchen
Hast recht, aber eigentlich bräuchte man nur die eine Zeile ändern:
Code: Select all
FOR /F "delims=- tokens=2" %%n IN (%Tmpfile%) DO REN "???-%%n%File%" "000-%%n%File%"
Code: Select all
FOR /F "delims=- tokens=2" %%n IN (%Tmpfile%) DO REN "000-%%n%File%" "???-%%n%File%

Grüße,
Murphy
Angenommen die Dateien, die man umbenennen will, liegen im aktiven Panel, die "Schablonendateinamen" Dateien liegen im inaktiven Panel. Beide Ansichten sind so sortiert, dass die erste Datei im aktiven Panel den Namen von der ersten Datei im inaktiven Panel bekommen soll, die zweite von der zweiten, usw.
Ich habe zwei AutoHotKey Skripte gebastelt, die die Dateinamen vom inaktiven Panel auf die Dateien im Aktiven Panel transferrieren:
Der erste Skript tut das nur fur eine Datei. Benutzungsweise - In beiden Panelen muss der Kursor auf ".." stehen. Dann F12 drucken biss alle Dateien umbenannt sind.
Der zweite Skript tut dasselbe mehrmals, also fur mehrere Dateien - man muss F12 nicht n-mal drucken (n ist ide Anzahl der umzubenennenden Dateien), sondern die Anzahl in "Loop, 2" definieren, z.B. "Loop, 28". Benutzungsweise - Die Anzahl der Dateien in Loop eintragen, Skript sichern und neu einlesen, den Kursor in beiden Panelen auf ".." stellen und F12 drucken.
Hinweise:
Der Hotkey ist umdefinierbar auf was immer man will.
Der Kursor muss am Anfang auf ".." in beiden Panelen stehen, sonst werden die Dateien falsch umbenannt.
Es passiert nichts schlimmes wenn man in Loop eine grossere Zahl definiert (angenommen die Anazahl der Dateien im aktiven und inaktiven Panel ist dieselbe), als die Anzahl der Dateien. Es wird nur die letzte Datei mehrmals auf denselben Namen umbenannt.
HTH
Roman
Ich habe zwei AutoHotKey Skripte gebastelt, die die Dateinamen vom inaktiven Panel auf die Dateien im Aktiven Panel transferrieren:
Der erste Skript tut das nur fur eine Datei. Benutzungsweise - In beiden Panelen muss der Kursor auf ".." stehen. Dann F12 drucken biss alle Dateien umbenannt sind.
Code: Select all
$F12::
If WinActive("ahk_class TTOTAL_CMD")
Send {Tab}{Down}+{F6}^c{Esc}{Tab}{Down}+{F6}^v{Enter}
return
Code: Select all
$F12::
SetKeyDelay, 100
If WinActive("ahk_class TTOTAL_CMD")
{
Loop, 2
{
Send {Tab}{Down}+{F6}^c{Esc}{Tab}{Down}+{F6}^v{Enter}
}
}
return
Der Hotkey ist umdefinierbar auf was immer man will.
Der Kursor muss am Anfang auf ".." in beiden Panelen stehen, sonst werden die Dateien falsch umbenannt.
Es passiert nichts schlimmes wenn man in Loop eine grossere Zahl definiert (angenommen die Anazahl der Dateien im aktiven und inaktiven Panel ist dieselbe), als die Anzahl der Dateien. Es wird nur die letzte Datei mehrmals auf denselben Namen umbenannt.
HTH
Roman
Mal angenommen, du drückst Strg+F, wählst die FTP-Verbindung (mit gespeichertem Passwort), klickst aber nicht auf Verbinden, sondern fällst tot um.
So, hier ein neues Script, dieses Mal als AutoIt3:
Bastel dir das ins Startermenü mit folgenden Parametern: "%P" "%T" {Anzahl Zeichen}
Wenn es mal mehr oder weniger Zeichen als die ersten 3 sein sollen, einfach als 3. Parameter {Anzahl Zeichen} übergeben, z. B. D:\Scripts\Rename.au3 "%P" "%T" 5
Ruft das Script auf und vergleicht alles bis auf die ersten 5 Buchstaben. Falls der Parameter {Anzahl Zeichen} weggelassen wird, wird standardmässig mit 3 Zeichen gearbeitet.
Teste das bitte Mal, ein paar Feinheiten sollten wir noch regeln können
Bei meinen Tests läuft es genau so, wie ich es mir vorgstellt habe...
Grüße,
Murphy
Code: Select all
#NoTrayIcon
#Include <string.au3>
#Include <Misc.au3>
$source = $cmdline[1]
$target = $cmdline[2]
$number = _Iif($cmdline[0] > 2, $cmdline[3], 3)
$workingdir = @Workingdir
$search = FileFindFirstFile($source & "\*.*")
If $search = -1 Then
MsgBox(0, "Fehler", "Keine Dateien vorhanden im Quellpfad")
Exit
EndIf
While 1
$file = FileFindNextFile($search)
If @error Then ExitLoop
If $file <> "." and $file <> ".." then CheckFiles($file)
WEnd
FileClose($search)
FileChangeDir($workingdir)
Func CheckFiles($file)
$rest = StringRight($file, StringLen($file) - $number)
$search2 = FileFindFirstFile($target & "\" & _StringRepeat("?", $number) & $rest)
If $search2 <> -1 Then
$file2 = FileFindNextFile($search2)
If Not @error Then
FileChangeDir($target)
RunWait(@Comspec & " /c Ren " & $file2 & " " & $file, "", @SW_HIDE)
Exit
EndIf
EndIf
FileClose($search2)
EndFunc
Wenn es mal mehr oder weniger Zeichen als die ersten 3 sein sollen, einfach als 3. Parameter {Anzahl Zeichen} übergeben, z. B. D:\Scripts\Rename.au3 "%P" "%T" 5
Ruft das Script auf und vergleicht alles bis auf die ersten 5 Buchstaben. Falls der Parameter {Anzahl Zeichen} weggelassen wird, wird standardmässig mit 3 Zeichen gearbeitet.
Teste das bitte Mal, ein paar Feinheiten sollten wir noch regeln können

Bei meinen Tests läuft es genau so, wie ich es mir vorgstellt habe...
Grüße,
Murphy
Na dann kann ich mir ja meine weiteren Bemühungen sparen. Ich hatte jetzt de Ansatz verfolgt, die ersten 4 zeichen zu löschen und stattdessen als erweiterung zu benennen.
also:
001.00ZUK-063WW.12DE.002-
002.00ZUK-063WW.12DE.007-
003.00ZUK-063WW.12DE.023-
004.00ZUK-063WW.12DE.017-
005.00ZUK-063WW.12DE.012-
006.00ZUK-063WW.12DE.004-
und
001.00ZUK-063WW.12DE.000-
002.00ZUK-063WW.12DE.000-
003.00ZUK-063WW.12DE.000-
004.00ZUK-063WW.12DE.000-
005.00ZUK-063WW.12DE.000-
006.00ZUK-063WW.12DE.000-
wodurch die Namen zu vergleichen wären. Aber mit dem Script geht das natürlich eleganter.
sheepdog
also:
001.00ZUK-063WW.12DE.002-
002.00ZUK-063WW.12DE.007-
003.00ZUK-063WW.12DE.023-
004.00ZUK-063WW.12DE.017-
005.00ZUK-063WW.12DE.012-
006.00ZUK-063WW.12DE.004-
und
001.00ZUK-063WW.12DE.000-
002.00ZUK-063WW.12DE.000-
003.00ZUK-063WW.12DE.000-
004.00ZUK-063WW.12DE.000-
005.00ZUK-063WW.12DE.000-
006.00ZUK-063WW.12DE.000-
wodurch die Namen zu vergleichen wären. Aber mit dem Script geht das natürlich eleganter.
sheepdog
"A common mistake that people make when trying to design something
completely foolproof is to underestimate the ingenuity of complete fools."
Douglas Adams
completely foolproof is to underestimate the ingenuity of complete fools."
Douglas Adams