Mehrfach-Umbenenn-Tool: bei gleichnamigen Dateien auch die Erste mit " (1)" benennen

German support forum

Moderators: white, Hacker, Stefan2

Post Reply
Shirkahn
Junior Member
Junior Member
Posts: 7
Joined: 2014-08-05, 07:19 UTC

Mehrfach-Umbenenn-Tool: bei gleichnamigen Dateien auch die Erste mit " (1)" benennen

Post by *Shirkahn »

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
User avatar
ghisler(Author)
Site Admin
Site Admin
Posts: 48232
Joined: 2003-02-04, 09:46 UTC
Location: Switzerland
Contact:

Re: Mehrfach-Umbenenn-Tool (1) einfügen

Post by *ghisler(Author) »

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.
Author of Total Commander
https://www.ghisler.com
User avatar
Stefan2
Power Member
Power Member
Posts: 4193
Joined: 2007-09-13, 22:20 UTC
Location: Europa

PowerShell: Mehrfach-Umbenenn-Tool auch die erste Datei mit "(1)" benennen

Post by *Stefan2 »

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:

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? :D



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
Shirkahn
Junior Member
Junior Member
Posts: 7
Joined: 2014-08-05, 07:19 UTC

Re: Mehrfach-Umbenenn-Tool (1) einfügen

Post by *Shirkahn »

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. :wink:
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
User avatar
Stefan2
Power Member
Power Member
Posts: 4193
Joined: 2007-09-13, 22:20 UTC
Location: Europa

Re: Mehrfach-Umbenenn-Tool (1) einfügen

Post by *Stefan2 »

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 sehe ich das ebenfalls.

Shirkahn 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. :wink:
So arbeitet man ja auch nicht, wenn man einen TC hat :D


- 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.
Shirkahn
Junior Member
Junior Member
Posts: 7
Joined: 2014-08-05, 07:19 UTC

Re: Mehrfach-Umbenenn-Tool: bei gleichnamigen Dateien auch die Erste mit " (1)" benennen

Post by *Shirkahn »

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