Batch Alle Dateien in einem Ordner umbenennen Punkt durch Unterstrich ersetzen
Guten Tag,
ich möchte gern in einer Batch-Datei alle Dateien in einem Ordner umbenennen. Diet Dateien wurden alle mit "." benannt (Bsp: test.test.test.txt) Nun möchte ich nicht in allen dateien einzeln die Punkt entfernen sondern die per Batch machen.
Über die folgenden Befehle werden alle Punkte ersetzt:
for %%i in ("c:\rename\*.*.*") do (
set "neu=%%~nxi"
ren "%%i" "!neu:.=_!"
)
Leider habe ich das Problem, dass der letzte Punkt nicht ersetzt werden darf, da es sich hier um die Dateiendung handelt.
In dem folgenden Beispiel ist diese Umbenennung nachtäglich durch Stringopertaionen möglich:
set hallowelt=Hallo_Welt_pdf
set letzte=%hallowelt:~-3%
set erste=%hallowelt:~0,-4%
set neu=%erste%.%letzte%
Jedoch schaffe ich es leider nicht diese Idee in einer For-Schleife zu verwirklichen. Kann mir da jemand helfen oder gibt es eine einfachere Lösung?
So sieht meine Lösung bisher aus:
for %%i in ("c:\rename\*_???") do (
set "var=%%~nxi"
set ende=%var:~-3%
set anfang=%var:~0,-4%
set name="%anfang%.%ende%"
Leider wird hier die Variable "var" anscheinend nicht richitg interpretiert und es kann nicht erkannt werden, dass etwas "abgeschnitten" werden soll.
Danke.
Mit freundlichen Grüßen,
D
ich möchte gern in einer Batch-Datei alle Dateien in einem Ordner umbenennen. Diet Dateien wurden alle mit "." benannt (Bsp: test.test.test.txt) Nun möchte ich nicht in allen dateien einzeln die Punkt entfernen sondern die per Batch machen.
Über die folgenden Befehle werden alle Punkte ersetzt:
for %%i in ("c:\rename\*.*.*") do (
set "neu=%%~nxi"
ren "%%i" "!neu:.=_!"
)
Leider habe ich das Problem, dass der letzte Punkt nicht ersetzt werden darf, da es sich hier um die Dateiendung handelt.
In dem folgenden Beispiel ist diese Umbenennung nachtäglich durch Stringopertaionen möglich:
set hallowelt=Hallo_Welt_pdf
set letzte=%hallowelt:~-3%
set erste=%hallowelt:~0,-4%
set neu=%erste%.%letzte%
Jedoch schaffe ich es leider nicht diese Idee in einer For-Schleife zu verwirklichen. Kann mir da jemand helfen oder gibt es eine einfachere Lösung?
So sieht meine Lösung bisher aus:
for %%i in ("c:\rename\*_???") do (
set "var=%%~nxi"
set ende=%var:~-3%
set anfang=%var:~0,-4%
set name="%anfang%.%ende%"
Leider wird hier die Variable "var" anscheinend nicht richitg interpretiert und es kann nicht erkannt werden, dass etwas "abgeschnitten" werden soll.
Danke.
Mit freundlichen Grüßen,
D
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 204849
Url: https://administrator.de/contentid/204849
Ausgedruckt am: 08.11.2024 um 07:11 Uhr
7 Kommentare
Neuester Kommentar
... aber nur, wenn in den Dateinamen kein "!" vorkommt - dann besser per Unterprogramm:
Wenn auch noch Ordner mit mehr als einem Punkt im Namen enthalten sein sollten (und die Umbenennung nur für Dateien erfolgen darf):
Grüße
bastla
@echo off & setlocal
for %%i in ("c:\rename\*.*.*") do set "neu=%%~ni" & call :ProcessFile "%%i"
goto :eof
:ProcessFile
ren %1 "%neu:.=_%%~x1"
goto :eof
@echo off & setlocal
pushd "c:\rename"
for /f "delims=" %%i in ('dir /b/a-d *.*.*') do set "neu=%%~ni" & call :ProcessFile "%%i"
popd
goto :eof
:ProcessFile
ren %1 "%neu:.=_%%~x1"
goto :eof
bastla
Hallo,
ich habe ein ähnliches Problem. Ich möchte dateien mit ABC_123_a.pdf umbenennen in ABC.123_a.pdf
also der zweite unterstrich soll (wenn vorhanden, auch ABC_123.pdf in ABC.123.pdf sind möglich) bleiben und der erste durch einen punkt ersetzt werden.
wie müsste ich Endoros code dann abändern (sorry bin kein Programmierer)?
ich habe ein ähnliches Problem. Ich möchte dateien mit ABC_123_a.pdf umbenennen in ABC.123_a.pdf
also der zweite unterstrich soll (wenn vorhanden, auch ABC_123.pdf in ABC.123.pdf sind möglich) bleiben und der erste durch einen punkt ersetzt werden.
wie müsste ich Endoros code dann abändern (sorry bin kein Programmierer)?