Unnötige Leerzeichen in mehreren Dateinamen auf einmal entfernen

darkrider84

Ensign
Registriert
Apr. 2015
Beiträge
145
Hallo,
ich habe den Advanced Renamer benutzt.
Eigentlich ein ganz nettes Programm.
Problem ist jetzt nur, dass meine Sammlung einiger Episoden meiner Sendung(en) nun so aussieht:
Code:
Dateiname    sieht  so  aus    - Folge xx - Staffel xx.mp4
Wie kann ich diese überflüssigen Leerzeichen entfernen, ohne die benötigten Leerzeichen zu entfernen?

Es soll so aussehen:
Dateiname sieht so aus - Folge xx - Staffel xx.mp4
Auf keinen so:
Dateinamesiehtsoaus-Folgexx-Staffelxx.mp4.
Kennt jemand ein Programm dafür?
Advanced Renamer, NNP und Siren habe ich bereits ausprobiert.
Die können das nicht.

Danke für alle Antworten im Voraus und einen sonnigen Tag noch
 
Zuletzt bearbeitet:
Hi

Bearbeite doch mal dein Startpost, dein Ist und Soll sind genau gleich :)

Ok, wollte deinen Beitrag zitieren, da sind die Leerzeichen aufgetaucht, so sieht man sie:
Code:
Ist:
Dateiname    sieht  so  aus    - Folge xx - Staffel xx.mp4
Soll:
Dateiname sieht so aus - Folge xx - Staffel xx.mp4


Ich hab mir mal ein VBS-Script gemacht, bei dem man die alten Namen sowie die entsprechend neuen Dateinamen je in einer Textdatei speichert, das Script benennt anschliessend die Dateien um, vielleicht hilfts dir:

Code:
'Benennt Dateien aus sourcenames in destnames um
'Sourcenames: Liste von Dateien mit Pfad, CMD-Befehl: dir /S /B /A-D > sourcenames.txt
'Neue Dateinamen (gleiche Reihenfolge!)


Set fso = CreateObject("Scripting.FileSystemObject")

sourcenames = "C:\pfad\testordner\sourcenames.txt"
destnames = "C:\pfad\testordner\destnames.txt"


Set sourceFile = fso.OpenTextFile(sourcenames)
Set destFile = fso.OpenTextFile(destnames)

while not (sourceFile.AtEndOfStream OR destFile.AtEndOfStream)
	source = sourceFile.ReadLine
	dest = destFile.ReadLine
	If (fso.FileExists(source)) Then
		If (fso.GetFile(source).Name <> dest) Then
			msgbox source & " -> " & dest
			fso.GetFile(source).Name = dest
		End If
	End If
Wend
sourceFile.Close
destFile.Close

Die Textdateien dafür erstelle ich meistens mit Excel-Formeln und Copy&Paste.
In deinem Fall müsstest du die Quell-Text-Datei mit dem erwähnten CMD-Befehl erstellen, eine Kopie davon erstellen und in der Kopie solange zwei aufeinanderfolgende Leerzeichen durch ein einzelnes ersetzen, bis nichts mehr ersetzt wird :)

Gruss - jumpin

Edit: Habe das Script ursprünglich auch geschrieben um Serien umzubenennen ... :)
 
Zuletzt bearbeitet:
Aus dem Kopf eine alternative Möglichkeit: Powershell öffnen und in den jeweiligen Ordner navigieren. Dann folgenden Befehl absetzen:

Code:
Dir *.mp4 | Rename-Item -NewName { $_.name -replace '\s{2,}',' ' } -wh

Damit werden für jeden Dateinamen mit der Endung .mp4 in diesem Ordner alle multiplen Instanzen von Whitespace durch ein einzelnes Leerzeichen ersetzt. Das -wh am Ende bedeutet "WhatIf", also quasi erstmal nur simulieren. Es werden noch keine Änderungen gemacht, sondern es wird dir nur angezeigt was passieren würde. Wenn du dir ganz, ganz sicher bist dass alles so in Ordnung ist entferne das -wh und lass den Befehl nochmal laufen. Ab da gibts keinen Weg zurück.
 
Die Methode mit Powershell klappt sehr gut.
Vielen Dank, das reicht mir.
Ich hatte mir FileBot mal angeguckt (um es allgemein anzugucken, nicht wegen der Leerzeichen-Problematik), ob es das kann, weiß ich aber nicht.

Gruß
 
Zurück
Oben