Per Batch Punkte aus Dateinamen entfernen
Problem bei einem System mit Punkten in Dateinamen
Ich suche eine Möglichkeit unter Windows (am liebsten per Batch) mehrere Dateien mit der Formatierung:
name.YYYY-MM-TT-HH.MM.SS.PDF
in
nameYYYY-MM-TT-HHMMSS.PDF
zu verwandeln.
Also kurz gesagt, die Punkte aus dem Dateinamen entfernen. Unter Linux hab ich das schon am Laufen (Perl & RegEx), aber aufgrund der gottgegebenen administrativen Faulheit, die mir innewohnt, möchte ich das in Zukunft gerne den Kunden unter Windows selber machen lassen.
Ich habe bereits eine recht ansehnliche Mehrfach umbenennen per Batch von Biber gefunden, aber leider war ich mit meinen eher mäßigen Batch-Erfahrungen nicht in der Lage, das so umzuschreiben, dass es auf mein Problem passt.
lg,
Jan
Ich suche eine Möglichkeit unter Windows (am liebsten per Batch) mehrere Dateien mit der Formatierung:
name.YYYY-MM-TT-HH.MM.SS.PDF
in
nameYYYY-MM-TT-HHMMSS.PDF
zu verwandeln.
Also kurz gesagt, die Punkte aus dem Dateinamen entfernen. Unter Linux hab ich das schon am Laufen (Perl & RegEx), aber aufgrund der gottgegebenen administrativen Faulheit, die mir innewohnt, möchte ich das in Zukunft gerne den Kunden unter Windows selber machen lassen.
Ich habe bereits eine recht ansehnliche Mehrfach umbenennen per Batch von Biber gefunden, aber leider war ich mit meinen eher mäßigen Batch-Erfahrungen nicht in der Lage, das so umzuschreiben, dass es auf mein Problem passt.
lg,
Jan
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 29204
Url: https://administrator.de/contentid/29204
Ausgedruckt am: 15.11.2024 um 11:11 Uhr
7 Kommentare
Neuester Kommentar
Hi,
schnipp renamefiles.cmd -------
@echo off
for /f %%i in (test.txt) do @call :renamefile %%i
goto ende
:renamefile
set fname=%~n1
set ext=%~x1
set newname=%fname:.=%
ren %1 %newname%%ext%
goto ende
:ende
schnapp renamefiles.cmd -------
in der test.txt stehen die Dateinamen drin
(dir /b name.*.pdf > test.txt)
Grüße
Dieter
schnipp renamefiles.cmd -------
@echo off
for /f %%i in (test.txt) do @call :renamefile %%i
goto ende
:renamefile
set fname=%~n1
set ext=%~x1
set newname=%fname:.=%
ren %1 %newname%%ext%
goto ende
:ende
schnapp renamefiles.cmd -------
in der test.txt stehen die Dateinamen drin
(dir /b name.*.pdf > test.txt)
Grüße
Dieter
Moin,
da war ich wohl zu langsam..
Ich hätte es wieder so gelöst:
(Unterstellung: der Batch wird in dem Verzeichnis gestartet, in dem die *.PDFs sind)
Über eine Unterverzeichnisstruktur / eine ganze Platte:
(Aufruf mit 'GlobalRenPdfs d:' oder 'GlobalRenPdfs "f:\Eigene Dateien"' oder ohne Parameter = aktuelles Laufwerk)
Gruß Biber
da war ich wohl zu langsam..
Ich hätte es wieder so gelöst:
::-- snipp RenPdfs.bat
:: ALT: name.YYYY-MM-TT-HH.MM.SS.PDF --> Dateimaske *.????-??-??-??.??.??.PDF
:: in NEU: nameYYYY-MM-TT-HHMMSS.PDF
@echo off & setlocal enableDelayedExpansion
For %%a in ( *.????-??-??-??.??.??.PDF) do Set "Name=%%~na" & ren "%%a" "!name:.=!.PDF"
::-- snapp RenPDFs.bat
(Unterstellung: der Batch wird in dem Verzeichnis gestartet, in dem die *.PDFs sind)
Über eine Unterverzeichnisstruktur / eine ganze Platte:
::-- snipp GlobalRenPdfs.bat
@echo off & setlocal enableDelayedExpansion
For /f %%a in ('dir /b /s "%1\*.????-??-??-??.??.??.PDF"') do Set "Name=%%~na" & ren "%%~dpnxa" "!name:.=!.PDF"
::-- snapp GlobalRenPDFs.bat
Gruß Biber