Mehrfach-Umbenenn-Tool: nach Ordner benennen und Nummerieren
Hallo,
ich werde gerade verrückt, weil ich ein Program suche, dass folgende Umbennung von Dateien ermöglicht.
In den Ordnern:
Ordner 1
Ordner 2
Ordner 3
.
.
.
Ordner 1000
möchte ich die darin enthalten Dateien (es gibt keine weiteren Unterordner darin) nach den Namen der jeweiligen Ordner, immer mit 0 für jeden Ornder beginnen, umbennen. (Eine Selektion nach Dateitypen
wäre schön.)
Es gibt viele Dateiumbennungstools. Am weitesten bin ich mit dem eigentlich recht einfachen Vorhaben mit dem Bulk-Renamer gekommen,
Der ärgert mich aber, da er offensichtlich mit so vielen Dateien auf einmal nicht klar kommt.
Bei dem Probieren bin ich bei meinem TC auf das Plugin beim Umbennungs-Tool gestoßen. Geht das vielleicht damit ?
(Es sind so viele Ordner, dass ich das nicht von Hand machen will/kann.)
MUT: Datei nach Ordner benennen und pro Ordner Nummerieren
Moderators: white, Hacker, Stefan2
Ich hab nicht so ganz verstanden, was du willst, daher wäre ein konkretes Beispiel hilfreich. Kann es sein, dass du die Dateien in jedem Ordner durchnummerieren willst und dabei gleichzeitig den Namen des Ordners mit in den Dateinamen aufnehmen willst? Konkretes Beispiel des Ergebnisses einer Umbenennaktion:
Ordner 1 - Bild001.jpg
Ordner 1 - Bild002.jpg
usw.
und für die weiteren Ordner dann die Nummerierung wieder von vorn beginnend
Ordner 3 - Bild001.jpg
Ordner 3 - Bild002.jpg
usw.
Falls dem so ist, hilft die Hilfe des MUT (Multiumbenenntool) des TC. Die Verwendung von [P] wird dir zumindest den Verzeichnisnamen bringen. Was TC AFAIK auch in der neuesten Version noch nicht kann, ist, die Nummerierung je Verzeichnis von vorn beginnen zu lassen. Da das aber schon mehrfach hier im Forum diskutiert wurde, schlage ich vor, du nutzt die Suchfunktion, um im Verlauf der Diskussionen genannte Alternativprogramme zu finden.
MfG Dalai
Ordner 1 - Bild001.jpg
Ordner 1 - Bild002.jpg
usw.
und für die weiteren Ordner dann die Nummerierung wieder von vorn beginnend
Ordner 3 - Bild001.jpg
Ordner 3 - Bild002.jpg
usw.
Falls dem so ist, hilft die Hilfe des MUT (Multiumbenenntool) des TC. Die Verwendung von [P] wird dir zumindest den Verzeichnisnamen bringen. Was TC AFAIK auch in der neuesten Version noch nicht kann, ist, die Nummerierung je Verzeichnis von vorn beginnen zu lassen. Da das aber schon mehrfach hier im Forum diskutiert wurde, schlage ich vor, du nutzt die Suchfunktion, um im Verlauf der Diskussionen genannte Alternativprogramme zu finden.
MfG Dalai
#101164 Personal licence
Ryzen 5 2600, 16 GiB RAM, ASUS Prime X370-A, Win7 x64
Plugins: Services2, Startups, CertificateInfo, SignatureInfo, LineBreakInfo - Download-Mirror
Ryzen 5 2600, 16 GiB RAM, ASUS Prime X370-A, Win7 x64
Plugins: Services2, Startups, CertificateInfo, SignatureInfo, LineBreakInfo - Download-Mirror
Danke Dalai, für deine Antwort. Genau das ist mein Wunsch, und wie es aussieht, geht das mit dem in jeden Ornder neu Hochzählen leider noch nicht. Es hätte ja sein können, dass es einen Trick gibt, daher hauptsächlich meine Frage.
Hoffentlich kommt bald diese Erweiterung. Wo kann ich die Bitte äußern ? Dann müsste ich, was die Dateisortierung und -archivierung anbelangt, an diesem Punkt nicht mehr fremd gehen.
Durch die Möglichkeit den Ordnernamen schon in die Dateien zu bekommen, kann ich mir mit anderen simplen Renaming Tools u. U. den Rest machen.
Hoffentlich kommt bald diese Erweiterung. Wo kann ich die Bitte äußern ? Dann müsste ich, was die Dateisortierung und -archivierung anbelangt, an diesem Punkt nicht mehr fremd gehen.
Durch die Möglichkeit den Ordnernamen schon in die Dateien zu bekommen, kann ich mir mit anderen simplen Renaming Tools u. U. den Rest machen.
PowerShell: Für jeden Ordner Zähler bei Null anfangen
Für jeden Ordner Dateien umbenennen Zähler bei Null anfangen
Man kann das auch mit Windows-Bordmitteln machen, hier mit Powershell.
1 - Erstelle ein Backup aller deiner Ordner
2 - öffne eine PowerShell Konsole
3 - navigiere in den Ordner, in dem alle diese Ordner1 bis Ordner1000 liegen
4 - führe diesen PowerShell Befehl aus:
Als Einzeiler (siehe Ende des Posts für ein Update):
Get-ChildItem | Where-Object {$_.PSISContainer -eq $true}| Foreach-Object {$ParentFolderName=$_.Name; cd $_.FullName; $count=0; Get-ChildItem} | Foreach-Object {$count++; Rename-Item -Path $_.FullName -NewName ( ("$ParentFolderName - " + $_.BaseName) + ("_{0:D4}" -f $count)+ ($_.Extension))}; cd..
(wobei "cd.." eigentlich offiziell als "Set-Location irgendwas" geschrieben wird)
Oder umgebrochen, Zeile für Zeile:
Get-ChildItem |
Where-Object {$_.PSISContainer -eq $true}|
Foreach-Object {$ParentFolderName=$_.Name; cd $_.FullName; $count=0; Get-ChildItem} |
Foreach-Object {$count++; Rename-Item -Path $_.FullName -NewName ( ("$ParentFolderName - " + $_.BaseName) + ("_{0:D4}" -f $count)+ ($_.Extension))}; cd..
Oder in Kurzfassung, mit PowerShell Aliase und kurzen Variablenamen:
dir | ?{$_.PSISContainer -eq $true}| %{$PFN=$_.Name; cd $_.FullName; $c=0; dir} | %{$c++; ren -Path $_.FullName -NewName ( ("$PFN - " + $_.BaseName) + ("_{0:D4}" -f $c) + ($_.Extension))}; cd..
Erklärung:
** Für jeden Unterordner (hier wirklich nur Ordner) im Hauptordner:
** merken wir uns den Namen des Unterordners in $PFN
** wechseln wir in diesen Unterordner mit CD
** setzen den $counter jeweils wieder auf 0
** listen den Inhalt des Unterordners auf (hier alle Dateien und eventuelle Unterordner)
** für jede Datei (oder Ordner) im Unterordner, benennen wir diese Datei um:
Hinter -NewName wird der neue Name zusammengebaut:
ParentFolderName + ' - ' + Originalname + 4-stelliger Zähler, generiert aus $counter + Originaldateierweiterung.
(dies ist natürlich anpassbar...., Und, mit der Klammersetzung habe ich hier noch gekämpft, möglicherweise kann man diesen Bereich hübscher zusammenbauen)
HTH?
UND IMMER VORHER EIN BACKUP MACHEN
--- EDIT:
Update, das Skript etwas bereinigt:
Get-ChildItem | Where-Object {$_.PSISContainer -eq $true}|
Foreach-Object {$ParentFolderName=$_.Name; cd $_.FullName; $count=0; Get-ChildItem} |
Foreach-Object {$count++; Rename-Item -Path $_.FullName -NewName ("$ParentFolderName - " + $_.BaseName + "_{0:D4}" -f $count + $_.Extension)}; cd..
---
Und eine Version ohne "Parent folder name":
Get-ChildItem | Where-Object {$_.PSISContainer -eq $true}|
Foreach-Object {cd $_.FullName; $count=0; Get-ChildItem} |
Foreach-Object {$count++; Rename-Item -Path $_.FullName -NewName ($_.BaseName + "_{0:D4}" -f $count + $_.Extension)}; cd..
Man kann das auch mit Windows-Bordmitteln machen, hier mit Powershell.
1 - Erstelle ein Backup aller deiner Ordner
2 - öffne eine PowerShell Konsole
3 - navigiere in den Ordner, in dem alle diese Ordner1 bis Ordner1000 liegen
4 - führe diesen PowerShell Befehl aus:
Als Einzeiler (siehe Ende des Posts für ein Update):
Get-ChildItem | Where-Object {$_.PSISContainer -eq $true}| Foreach-Object {$ParentFolderName=$_.Name; cd $_.FullName; $count=0; Get-ChildItem} | Foreach-Object {$count++; Rename-Item -Path $_.FullName -NewName ( ("$ParentFolderName - " + $_.BaseName) + ("_{0:D4}" -f $count)+ ($_.Extension))}; cd..
(wobei "cd.." eigentlich offiziell als "Set-Location irgendwas" geschrieben wird)
Oder umgebrochen, Zeile für Zeile:
Get-ChildItem |
Where-Object {$_.PSISContainer -eq $true}|
Foreach-Object {$ParentFolderName=$_.Name; cd $_.FullName; $count=0; Get-ChildItem} |
Foreach-Object {$count++; Rename-Item -Path $_.FullName -NewName ( ("$ParentFolderName - " + $_.BaseName) + ("_{0:D4}" -f $count)+ ($_.Extension))}; cd..
Oder in Kurzfassung, mit PowerShell Aliase und kurzen Variablenamen:
dir | ?{$_.PSISContainer -eq $true}| %{$PFN=$_.Name; cd $_.FullName; $c=0; dir} | %{$c++; ren -Path $_.FullName -NewName ( ("$PFN - " + $_.BaseName) + ("_{0:D4}" -f $c) + ($_.Extension))}; cd..
Erklärung:
** Für jeden Unterordner (hier wirklich nur Ordner) im Hauptordner:
** merken wir uns den Namen des Unterordners in $PFN
** wechseln wir in diesen Unterordner mit CD
** setzen den $counter jeweils wieder auf 0
** listen den Inhalt des Unterordners auf (hier alle Dateien und eventuelle Unterordner)
** für jede Datei (oder Ordner) im Unterordner, benennen wir diese Datei um:
Hinter -NewName wird der neue Name zusammengebaut:
ParentFolderName + ' - ' + Originalname + 4-stelliger Zähler, generiert aus $counter + Originaldateierweiterung.
(dies ist natürlich anpassbar...., Und, mit der Klammersetzung habe ich hier noch gekämpft, möglicherweise kann man diesen Bereich hübscher zusammenbauen)
HTH?
UND IMMER VORHER EIN BACKUP MACHEN
--- EDIT:
Update, das Skript etwas bereinigt:
Get-ChildItem | Where-Object {$_.PSISContainer -eq $true}|
Foreach-Object {$ParentFolderName=$_.Name; cd $_.FullName; $count=0; Get-ChildItem} |
Foreach-Object {$count++; Rename-Item -Path $_.FullName -NewName ("$ParentFolderName - " + $_.BaseName + "_{0:D4}" -f $count + $_.Extension)}; cd..
---
Und eine Version ohne "Parent folder name":
Get-ChildItem | Where-Object {$_.PSISContainer -eq $true}|
Foreach-Object {cd $_.FullName; $count=0; Get-ChildItem} |
Foreach-Object {$count++; Rename-Item -Path $_.FullName -NewName ($_.BaseName + "_{0:D4}" -f $count + $_.Extension)}; cd..
Last edited by Stefan2 on 2017-07-21, 13:23 UTC, edited 1 time in total.