Dateinamen durch vorangestellte Nullen auf gleiche Länge bringen
Hallo Gemeinde,
schon wieder stehe ich vor einen Problem und benötige Eure geschätzte Hilfe. Ich habe das Internet und auch das Forum hier durchforstet und die angebotenen Lösungen sind für Linux, PHP oder Python bzw. funktionieren nicht nach meinen Wünschen. Die im Netz angebotenen Programme tun dies auch nicht bzw. habe ich noch nicht das richtige gefunden. Vielleicht kann mir jemand einen Lösungsweg in VBS oder als Batchdatei aufzeigen, mit dem ich folgendes erreiche:
Die Dateinamen in einem Ordner sollen durch vorangestellte Nullen alle auf gleiche Länge gebracht werden, also z.B.
Ich würde mich sehr freuen, wenn eine nachvollziehbare LÖsung gefunden würde und danke im voraus für Eure Mühe
Freundlichst GH
schon wieder stehe ich vor einen Problem und benötige Eure geschätzte Hilfe. Ich habe das Internet und auch das Forum hier durchforstet und die angebotenen Lösungen sind für Linux, PHP oder Python bzw. funktionieren nicht nach meinen Wünschen. Die im Netz angebotenen Programme tun dies auch nicht bzw. habe ich noch nicht das richtige gefunden. Vielleicht kann mir jemand einen Lösungsweg in VBS oder als Batchdatei aufzeigen, mit dem ich folgendes erreiche:
Die Dateinamen in einem Ordner sollen durch vorangestellte Nullen alle auf gleiche Länge gebracht werden, also z.B.
- 1.jpg wird 00001.jpg
- 14.jpg wird 00014.jpg
- 111.jg wird 00111.jpg
- 999.jpg wird 00999.jpg
- 8888.jpg wird 08888.jpg
- 12345.jpg bleibt
Ich würde mich sehr freuen, wenn eine nachvollziehbare LÖsung gefunden würde und danke im voraus für Eure Mühe
Freundlichst GH
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 7913072212
Url: https://administrator.de/contentid/7913072212
Ausgedruckt am: 26.11.2024 um 10:11 Uhr
8 Kommentare
Neuester Kommentar
Moin.
Nichts leichter als das.
Powershell
Batch
Gruß siddius
Nichts leichter als das.
Powershell
$dir ='D:\Verzeichnis'
$max = (Get-ChildItem $dir -File | %{$_.Basename.Length} | measure -Maximum).Maximum
Get-ChildItem $dir -File -Filter *.jpg | rename-item -NewName {"$($_.Basename.padleft($max,'0'))$($_.Extension)"} -verbose
@echo off &setlocal enabledelayedexpansion
set max=5
for %%a in ("D:\Verzeichnis\*.jpg") do (
set "basename=0000%%~na"
ren "%%a" "!basename:~-%max%!%%~xa"
)
Ich hab da aus Interesse mal eine AI befragt. Das ist das Ergebnis
$directory = "X:\Pfad\zum\Verzeichnis"
$files = Get-ChildItem -Path $directory -File
$maxLength = ($files | ForEach-Object { $_.Name.Length } | Measure-Object -Maximum).Maximum
foreach ($file in $files) {
$newName = $file.Name.PadLeft($maxLength, '0')
$newPath = Join-Path -Path $directory -ChildPath $newName
Rename-Item -Path $file.FullName -NewName $newPath
}
Zitat von @Gurkenhobel:
@kpunkt,
danke für das Angebot, aber das muss die AI-KI wohl noch etwas lernen, denn es tut sich nix. Das kann wohl aber nicht an den Leerzeichen im Ordnernamen liegen, oder ?
Dann hat deine Executionpolicy wohl angeschlagen, der Code selbst funktioniert wenn auch nur wenn die Endungen im Verzeichnis alle gleich lang sind, mein PS-Code berücksichtigt das ebenfalls in dem er nur die Länge des Basename statt des ganzen Namens inkl. Extension auswertet.@kpunkt,
danke für das Angebot, aber das muss die AI-KI wohl noch etwas lernen, denn es tut sich nix. Das kann wohl aber nicht an den Leerzeichen im Ordnernamen liegen, oder ?
Das, was die AI ausgespuckt hat funktioniert schon. Ist halt sehr rudimentär. Mir ist aber auch gleich aufgefallen, dass er alle Zeichen, also den kompletten Namen samt Endung zählt. War aber auh nicht gefordert, da es sich ja ausschließlich um .jpg-Dateien handelt.
Man müsste da jweils "Name" durch "Basename" ersetzen. Auch $file.Name.PadLeft muss ein $file.Baseame.PadLeft werden.
Ansonsten ist es schon etwas bemerkenswert, was so eine AI aus dem Ärmel schüttelt. War ja nur eine kostenfreie Version.
Vor allem geht sie schrittweise an das Problem ran und erklärt alles. Ist für Programmierneulinge dann doch ziemlich hilfreich.
Aber! ich hatte schon mal einen anderen Code durch eine AI generieren lassen. Und der funktionierte nicht. War eine Kleinigkeit, aber ein Neuling kommt da im Leben nie drauf.
Um mal einen kleinen Schubs zu erhalten finde ich das aber ziemlich gut.
Man müsste da jweils "Name" durch "Basename" ersetzen. Auch $file.Name.PadLeft muss ein $file.Baseame.PadLeft werden.
Ansonsten ist es schon etwas bemerkenswert, was so eine AI aus dem Ärmel schüttelt. War ja nur eine kostenfreie Version.
Vor allem geht sie schrittweise an das Problem ran und erklärt alles. Ist für Programmierneulinge dann doch ziemlich hilfreich.
Aber! ich hatte schon mal einen anderen Code durch eine AI generieren lassen. Und der funktionierte nicht. War eine Kleinigkeit, aber ein Neuling kommt da im Leben nie drauf.
Um mal einen kleinen Schubs zu erhalten finde ich das aber ziemlich gut.
Wenn es kein Skript sein muss hilft der hier.
http://www.1-4a.com/rename/
http://www.1-4a.com/rename/