Hallo,
ich benenne mit dem Tool alle meine Fotos um in z.B. 20230803_203335.jpg
Nun kann es passieren, das 2 oder drei Fotos innerhalb einer Sekunde geschossen wurden. Es kommt der Hinweis, ob (2) (3) usw. der Datei angehängt werden soll. Das ist für mich in Ordnung. Aber ich würde gerne der ersten der identischen Dateinamen eine (1) hinzufügen. Weil der Windows-Dateimanager die unter die (2) sortiert, obwohl sie darüber gehört. Ich benenne sie dann per Hand um. So oft kommt es zum Glück nicht vor.
Aber könnte das MU-Tool das nicht auch bewerkstelligen?
Viele Grüße
Andy
Mehrfach-Umbenenn-Tool: bei gleichnamigen Dateien auch die Erste mit " (1)" benennen
Moderators: Hacker, Stefan2, white
- ghisler(Author)
- Site Admin
- Posts: 50421
- Joined: 2003-02-04, 09:46 UTC
- Location: Switzerland
- Contact:
Re: Mehrfach-Umbenenn-Tool (1) einfügen
Das geht über den Eintrag
AutoRenameMode=1
in der wincmd.ini unter [Configuration]
Erklärung aus der Hilfe:
Legt fest, wie Dateien beim Kopieren oder im Mehrfach-Umbenenntool automatisch umbenannt werden. Summe von:
1: Nummer (x) getrennt durch ein Leerzeichen anhängen: name (2).txt oder name(2).txt
2: Nummerierung bei (2) beginnen statt mit (1), also name.txt, name (2).txt usw.
Vorgabe ist 3, es wird also ein Leerzeichen vor () eingefügt, und die Zählung beginnt bei 2.
AutoRenameMode=1
in der wincmd.ini unter [Configuration]
Erklärung aus der Hilfe:
Legt fest, wie Dateien beim Kopieren oder im Mehrfach-Umbenenntool automatisch umbenannt werden. Summe von:
1: Nummer (x) getrennt durch ein Leerzeichen anhängen: name (2).txt oder name(2).txt
2: Nummerierung bei (2) beginnen statt mit (1), also name.txt, name (2).txt usw.
Vorgabe ist 3, es wird also ein Leerzeichen vor () eingefügt, und die Zählung beginnt bei 2.
Author of Total Commander
https://www.ghisler.com
https://www.ghisler.com
PowerShell: Mehrfach-Umbenenn-Tool auch die erste Datei mit "(1)" benennen
Das automatische Umbenennen wirkt nur auf die Nachfolgenden, gleichnamigen Dateien.
Diese werden mit " (2)" oder " (1)" usw. ergänzt.
Um auch die erste gleichnamige Datei mit einem "(1)" zu versehen,
verwende AutoRenameMode=3 (siehe Beitrag oben mit der Beschreibung aus der Hilfe)
und nachträglich ein Skript, zB das hier unten.
VON:
20230803_203335.jpg
20230803_204001.jpg
20230803_204001 (2).jpg
20230803_204001 (3).jpg
20230803_204321.jpg
20230803_204321 (2).jpg
20230803_204321 (3).jpg
20230803_204444.jpg
ZU:
20230803_203335.jpg
20230803_204001 (1).jpg
20230803_204001 (2).jpg
20230803_204001 (3).jpg
20230803_204321 (1).jpg
20230803_204321 (2).jpg
20230803_204321 (3).jpg
20230803_204444.jpg
USE:
- verwende AutoRenameMode=3 in der wincmd.ini
- erstelle ein Backup deines Ordners
- dann öffne eine Powershell-Box im gewünschten Verzeichnis
- und füge den folgenden Code ein
dir "*2).*"|ForEach{$F=$_.Name -replace(" \(2\)");if(Test-Path $F){$N=((GI $F).BaseName +' (1)'+ (GI $F).Extension);ren $F $N}}
Das Skript findet alle Dateien mit " (2)" am Ende des Dateinamens, vor der Erweiterung (Beispiel: Name (2).erw),
sucht dann eine gleichnamige Datei ohne dieses " (2)" ( Name.erw), und fügt an diese Datei ein " (1)" hinzu (Name (1).erw).
Derselbe Code, ausführlicher und mit Standard-Befehlsbezeichnungen:
HTH?
Tipp:
Erstelle am Besten immer erst ein Backup deiner Dateien!, bevor du fremde Skript ausführst.
Tipp:
Im TC gehe in den obersten Ordner deiner Verzeichnisstruktur.
- Öffne eine DOS-Box (Menü "Befehle > Kommandozeilenfenster öffnen"), dann bist du gleich im richtigen Verzeichnis.
- Führe dort den Befehl "powershell" aus, dann arbeitest du mit der PowerShell und kannst das obige Skript ausführen.
Tipp:
Ich habe in meiner "usercmd.ini" den eigenen Befehl:
[em_LaunchPowerShell]
cmd=PowerShell.exe
und in der "WINCMD.INI" den folgenden Tastaturshortcut definiert:
[Shortcuts]
;Use 'Ctrl+ letter o' to launch a DOS-Box in current path
C+o=cm_ExecuteDOS
;Use 'Ctrl+zero 0' to execute my user defined command to launch PoSh in current path
C+0=em_LaunchPowerShell
Tipp:
Falls es gefällt, kann man das Skript auch über einen Button aufrufen (notfalls in eine Textdatei schreiben und diese aufrufen),
oder ein UserDefiniertesKommando erstellen, welches man als Button-Kommando verwenden, und auch über einen Tastaturkürzel ausführen kann.
Tipp:
vvvvv siehe meine Signatur für unsere gesammelten Tipps&Tricks in deutscher sowie in englischer Sprache vvvvv
Diese werden mit " (2)" oder " (1)" usw. ergänzt.
Um auch die erste gleichnamige Datei mit einem "(1)" zu versehen,
verwende AutoRenameMode=3 (siehe Beitrag oben mit der Beschreibung aus der Hilfe)
und nachträglich ein Skript, zB das hier unten.
VON:
20230803_203335.jpg
20230803_204001.jpg
20230803_204001 (2).jpg
20230803_204001 (3).jpg
20230803_204321.jpg
20230803_204321 (2).jpg
20230803_204321 (3).jpg
20230803_204444.jpg
ZU:
20230803_203335.jpg
20230803_204001 (1).jpg
20230803_204001 (2).jpg
20230803_204001 (3).jpg
20230803_204321 (1).jpg
20230803_204321 (2).jpg
20230803_204321 (3).jpg
20230803_204444.jpg
USE:
- verwende AutoRenameMode=3 in der wincmd.ini
- erstelle ein Backup deines Ordners
- dann öffne eine Powershell-Box im gewünschten Verzeichnis
- und füge den folgenden Code ein
dir "*2).*"|ForEach{$F=$_.Name -replace(" \(2\)");if(Test-Path $F){$N=((GI $F).BaseName +' (1)'+ (GI $F).Extension);ren $F $N}}
Das Skript findet alle Dateien mit " (2)" am Ende des Dateinamens, vor der Erweiterung (Beispiel: Name (2).erw),
sucht dann eine gleichnamige Datei ohne dieses " (2)" ( Name.erw), und fügt an diese Datei ein " (1)" hinzu (Name (1).erw).
Derselbe Code, ausführlicher und mit Standard-Befehlsbezeichnungen:
Code: Select all
Get-ChildItem "*2).*" |
ForEach-Object{
$Find = $_.Name -replace(" \(2\)") ;
if (Test-Path $Find) {
$New = ( (Get-Item $Find).BaseName + ' (1)' + (Get-Item $Find).Extension ) ;
Rename-Item $Find $New
}
}
HTH?

Tipp:
Erstelle am Besten immer erst ein Backup deiner Dateien!, bevor du fremde Skript ausführst.
Tipp:
Im TC gehe in den obersten Ordner deiner Verzeichnisstruktur.
- Öffne eine DOS-Box (Menü "Befehle > Kommandozeilenfenster öffnen"), dann bist du gleich im richtigen Verzeichnis.
- Führe dort den Befehl "powershell" aus, dann arbeitest du mit der PowerShell und kannst das obige Skript ausführen.
Tipp:
Ich habe in meiner "usercmd.ini" den eigenen Befehl:
[em_LaunchPowerShell]
cmd=PowerShell.exe
und in der "WINCMD.INI" den folgenden Tastaturshortcut definiert:
[Shortcuts]
;Use 'Ctrl+ letter o' to launch a DOS-Box in current path
C+o=cm_ExecuteDOS
;Use 'Ctrl+zero 0' to execute my user defined command to launch PoSh in current path
C+0=em_LaunchPowerShell
Tipp:
Falls es gefällt, kann man das Skript auch über einen Button aufrufen (notfalls in eine Textdatei schreiben und diese aufrufen),
oder ein UserDefiniertesKommando erstellen, welches man als Button-Kommando verwenden, und auch über einen Tastaturkürzel ausführen kann.
Tipp:
vvvvv siehe meine Signatur für unsere gesammelten Tipps&Tricks in deutscher sowie in englischer Sprache vvvvv
Re: Mehrfach-Umbenenn-Tool (1) einfügen
Hallo und vielen Dank für die Tipps.
ich habe da bereits ein ähnliches Skript. Die Datei kopiere ich mir dann in den betreffenden Ordner und führe diese aus. Aber das nutze ich schon lange nicht mehr. Wenn ich die neuen Fotos einsortiere, habe ich entsprechend viele Ordner. Es war mir irgendwann etwas zu umständlich die Datei zu kopieren, auszuführen und wieder zu löschen.
Wenn ich es richtig verstanden habe, kann TC immer nur die darauffolgenden, gleichnamigen Dateien mit (2) usw benennen und nicht mehr die davor.
Das mit dem Shortcut probiere ich noch aus.
VG
Andy
ich habe da bereits ein ähnliches Skript. Die Datei kopiere ich mir dann in den betreffenden Ordner und führe diese aus. Aber das nutze ich schon lange nicht mehr. Wenn ich die neuen Fotos einsortiere, habe ich entsprechend viele Ordner. Es war mir irgendwann etwas zu umständlich die Datei zu kopieren, auszuführen und wieder zu löschen.

Wenn ich es richtig verstanden habe, kann TC immer nur die darauffolgenden, gleichnamigen Dateien mit (2) usw benennen und nicht mehr die davor.
Das mit dem Shortcut probiere ich noch aus.
VG
Andy
Code: Select all
#Für jede "XXX (2).ext"-Datei, wenn "XXX.ext" existiert, ändere "XXX.ext" zu "XXX (1).ext"
Get-ChildItem | ForEach-Object{
$CurrentFile=$_.BaseName;
IF($CurrentFile.EndsWith(" (2)")){
$FirstFile = $CurrentFile.SubString(0,$CurrentFile.length-4);
IF( Test-Path($FirstFile+$_.Extension) ){
Ren ($FirstFile + $_.Extension)($FirstFile + " (1)" + $_.Extension)
}
}
}
pause
Re: Mehrfach-Umbenenn-Tool (1) einfügen
So sehe ich das ebenfalls.Shirkahn wrote: 2023-08-04, 15:39 UTC Wenn ich es richtig verstanden habe, kann TC immer nur die darauffolgenden, gleichnamigen Dateien mit (2) usw benennen und nicht mehr die davor.
So arbeitet man ja auch nicht, wenn man einen TC hatShirkahn wrote: 2023-08-04, 15:39 UTC Wenn ich die neuen Fotos einsortiere, habe ich entsprechend viele Ordner.
Es war mir irgendwann etwas zu umständlich die Datei zu kopieren, auszuführen und wieder zu löschen.![]()

- entweder du hast dein Skript in einer Datei und rufst diese über einen Button auf:
CMD = powershell -NoExit -ExecutionPolicy Bypass -File
PARAM = "L:\aufwerk\pfad zum skript\meinSkript.ps1"
- oder du hast so ein kleines Skript komplett direkt im Button.
Das kann allerdings etwas umständlich sein mit dem Quoting.
- oder, wie gesagt, ein UDK und dann eine Tastaturkombination
In allen Fällen führt der TC das Skript immer im gerade aktuell aktiven Ordner aus.
(falls gewünscht, oder immer in einem bestimmten Ordner)
Also nicht ständig kopieren, ausführen, löschen.
Sondern einmal anlegen und immer wieder verwenden.
Wenn ich wieder Zeit habe, poste ich mal einen copy&paste Button-Code mit dem obigen Skript.
Für weitere Details fragt einfach, lies die FAQs über meine Sig, oder such im Forum (via Google) nach PowerShell-Kommandos.
Re: Mehrfach-Umbenenn-Tool: bei gleichnamigen Dateien auch die Erste mit " (1)" benennen
Hi!
es hat geklappt. Ich habe einen Button erstellt und führe die ps1 darüber aus.
Als Kommando habe ich:
powershell -ExecutionPolicy Bypass -File
eingetragen, dann schließt sich auch das Fenster nach Ausführung.
Vielen Dank für den Tipp!
es hat geklappt. Ich habe einen Button erstellt und führe die ps1 darüber aus.
Als Kommando habe ich:
powershell -ExecutionPolicy Bypass -File
eingetragen, dann schließt sich auch das Fenster nach Ausführung.
Vielen Dank für den Tipp!