ozabel
Goto Top

Wie aus Dateinamen einen durch Sonderzeichen begrenzten variablen String entfernen

Hallo,

ich habe jetzt schon viele Beiträge gelesen aber leider keine Lösung für mein Problem gefunden.
Ich möchte die Namen von diversen Dateien eines Ordners (incl. Unterordner) umbenennen, in dem ein durch Sonderzeichen begrenzter variabler Teil entfernt wird.
Beispiele:
Datei heißt "Hier bin ich [der Grinch] zu Hause.txt"
und soll heißen "Hier bin ich zu Hause.txt"
oder auch "Datei [von mir].txt" soll zu "Datei.txt" werden.
Wie kann ich jetzt den String " [....]" entfernen?

Danke Oliver

Content-ID: 104501

Url: https://administrator.de/contentid/104501

Ausgedruckt am: 25.11.2024 um 22:11 Uhr

bastla
bastla 20.12.2008 um 09:43:21 Uhr
Goto Top
Hallo ozabel und willkommen im Forum!

Wenn Dein(e) Begrenzungszeichen tatsächlich nur den nicht benötigten Teil des Namens "einrahmen" (und nicht auch schon vor diesem Teil als "regulärer" Bestandteil enthalten ist/sind), dann etwa so:
for /f "delims=" %i in ('dir /s /b /a-d "D:\Dein Ordner\*.txt"') do @for /f "tokens=1,2* delims=" %a in ("%~nxi") do @echo ren "%i" "%a%c"
Wenn das Testen (direkt an der Kommandozeile) erfolgreich verlaufen ist, kannst Du das "echo" vor dem "ren" entfernen - solange es noch da ist, wird der Befehl zum Umbenennen nur angezeigt, aber nicht ausgeführt.

Falls Du einen Batch daraus machen willst, jeweils die "%"-Zeichen verdoppeln (also "%%i", "%%a", ..., aber auch "%%~nxi" verwenden).

Grüße
bastla
ozabel
ozabel 21.12.2008 um 03:26:36 Uhr
Goto Top
Hallo bastla,

vielen Dank für die prompte Hilfe. Hat grundsätzlich funktioniert, jedoch bleibt das Leerzeichen vor dem nun entfernten Sting stehen.
Kann man das auch irgendwie noch entfernen?

Ich habe zwar folgendes hier im Forum gefunden (und für mein Anliegen umgewandelt):

for /f "delims=" %%i in ('dir /s /b /a-d *.txt') do call :ren "%%i"
goto ende

:ren
set fname=%1
set newname=%fname: .txt=.txt%
ren %1 %newname%
goto ende

:ende

Aber zum einen bedeutet das ein erneutes Aufrufen aller Dateien (vielleicht geht das auch gleich mit beim ersten Schritt).
Und zum anderen läuft es nicht (es wird nur eine Datei aufgerufen, und per "echo ren" wird für diese zwar die gewünschte Entfernung angezeigt, aber ohne Echo gibt es einen Syntaxfehler).

Hast Du (oder ein anderer Wissender) eine Idee?

Oliver
bastla
bastla 21.12.2008 um 13:52:32 Uhr
Goto Top
Hallo ozabel!

Versuch es damit:
@echo off & setlocal
for /f "delims=" %%i in ('dir /s /b /a-d "D:\Dein Ordner\*.txt"') do call :ProcessFile "%%i"  
goto :eof

:ProcessFile
for /f "tokens=1,2* delims=" %%a in ("%~nx1") do (set "Teil1=%%a" & set "Teil2=%%c")  
if "%Teil1:~-1%"==" " set "Teil1=%Teil1:~,-1%"  
echo ren %1 "%Teil1%%Teil2%"  
goto :eof
Grüße
bastla
michaelfolz
michaelfolz 31.05.2010 um 20:01:31 Uhr
Goto Top
Hallo,

steht vor einem ähnlichen Problem und frage mich nach einigen Recherchen im Web, ob es wirklich kein fertiges Tool gibt, mit dem man beim Umbenennen einer Reihe von Dateien einen - in Länge, Inhalt und Position - variablen String entfernen lassen kann.

MfG,
MFo
bastla
bastla 31.05.2010 um 21:25:51 Uhr
Goto Top
Hallo michaelfolz!
frage mich nach einigen Recherchen im Web, ob es wirklich kein fertiges Tool gibt
Hinsichtlich der Tatsache, dass wir in diesem Thread ziemlich unter uns bleiben dürften, ist es naheliegend, Dich zu fragen ... face-wink

Damit das aber kein Selbstgespräch wird, eine kurze Stellungnahme meinerseits: Falls Du eine konkrete Problemstellung hast und diese partout nicht per Batch und / oder VBScript lösen magst, kann / mag ich jedenfalls nix beitragen ...

Grüße
bastla

[Edit]
Hallo Biber - Gruß zurück face-smile
Meinen edukativ gemeinten Hinweis auf die relative Einsamkeit in diesem Thread hast Du jetzt aber gerade relativiert ... face-wink
[/Edit]

[Edit2] Die Frage hinsichtlich der 2000 Aufrufe ist allerdings, wie viele seit gestern um etwa 20:30 getätigt wurden (außerdem hatte ich ja "relativ" gesagt face-wink) ... [/Edit2]
Biber
Biber 31.05.2010 um 21:28:37 Uhr
Goto Top
Moin michaelfolz,

Zitat von @michaelfolz:
Hallo,

steht vor einem ähnlichen Problem und frage mich nach einigen Recherchen im Web, ob es wirklich kein fertiges Tool gibt, mit
dem man beim Umbenennen einer Reihe von Dateien einen - in Länge, Inhalt und Position - variablen String entfernen lassen kann.

MfG,
MFo
Öhhmmm....ja.
Ich frage mich auch oft -manchmal sogar ohne vorangegangene Recherchen im Web - wie morgen wohl das Wetter wird, warum es die FDP immer noch über die 5-Prozenthürde schafft und ob eine/r von uns jemals eine Meisterschaftsfeier auf Schalke erleben wird.

Nur... ich frage mich meist weniger öffentlich... face-wink

Im Ernst, natürlich gibt es mit der Maus bedienbare Tools in den Farben der Saison und mit abgerunden Ecken.
Und die werbewirksamen Namen lauten genauso, wie sie auch von jeder Krabbelgruppe nach zweieinhalb Minuten erarbeitet worden wären (FlexRenamer, BulkRename, SuperRename, MultiRenamer, MegaRenamer, X-Renamer... *schnarch*).

Nur... WTF sollte sich jemand einen 3,8 MegaByte-$30-Shareware-Klotz mit automatischer Selbstverankerung im Startmenü, Schnellstartleiste und aufm Desktop herunterladen und installieren, wenn ein simples Copy&Pasten oder Abtippseln einer Handvoll Halbzeilen dasselbe leistet?

Anyway... solltest du bei deiner Frage im Web auch Antworten finden...
--> dann stelle doch bitte einen "Erfahrungsbericht" zu Rename/Umbenams-Tools in den Bereich "Tools & Utilities".

Denn auch dafür gibt es durchaus eine Zielgruppe unter unseren MitleserInnen.

Grüße
Biber

[Edit] Biber grüßt alle Rechtsüberholer. face-wink [/Edit]
[Edit2] Moin bastla, sooo einsam kann es in diesem Thread nicht sein bei knapp 2000 Aufrufen bis jetzt... [/Edit2]
michaelfolz
michaelfolz 01.06.2010 um 11:00:54 Uhr
Goto Top
Okay,

latürnich wollte ich, dass bastla sich meldet, hab mich nur nicht getraut, ihn direkt zu fragen.

Habe auch nix dagegen, Batchcode zu übernehmen, wenn, ja wenn er auch für einen Nichtexperten wie mich nachvollziehbar, d.h. kommentiert ist.

Vielleicht hat bastla ja Lust, für mich Wurm etwas zu proggen <schwitz, anbet>:

Dateinamen lauten:
"abcxyz 2010 001.jpg
abcxyz 2010 002.jpg
abcxyz 2010 003.jpg"
- darunter auch .avi -
usw.

Bei denen soll die Nummerierung weg.

MfG,
MFo
bastla
bastla 01.06.2010 um 11:34:01 Uhr
Goto Top
Hallo michaelfolz!
... hab mich nur nicht getraut, ihn direkt zu fragen.
Ich hoffe, das lässt sich mit Schüchternheit Deinerseits begründen und nicht durch einen Eindruck, den ich vermittelt hätte ... face-wink

Könntest Du ein klein wenig mehr zu den umzubenennenden Dateien sagen (immer genau 3 Bestandteile - und daher genau 2 Leerzeichen - enthalten, alle in einem Ordner, ...)?

Grüße
bastla