Per Batch Dateinamen nach X Zeichen abschneiden (Endung beibehalten!)
Hallo Community,
ich habe tausende PDF-Dateien, alle unterschiedlich lang und in verschiedenen Ordnern...
Bsp:
4120135748353543435413.pdf
435875851535135.pdf
4863486443843846843.pdf
Diese Dateien will ich nach X Zeichen abschneiden, sprich das Ergebnis soll sein:
4120135748353.pdf
4358758515351.pdf
4863486443843.pdf
(der jeweilige Ordner soll gleich bleiben)
Leider komme ich nicht wirklich voran, die Beiträge hier auf der Seite haben mir auch nicht weitergeholfen
Aber ich weiß dass es hier wahrhaftige Batch-Profis gibt.
Kann mir jemand einen Denkanstoß bzw. eine Lösungsmöglichkeit anbieten?
Vielen lieben Dank vorab!
die uebeltat
@edit: Ich wollte nicht unhöflich wirken, Entschuldigung (:
ich habe tausende PDF-Dateien, alle unterschiedlich lang und in verschiedenen Ordnern...
Bsp:
4120135748353543435413.pdf
435875851535135.pdf
4863486443843846843.pdf
Diese Dateien will ich nach X Zeichen abschneiden, sprich das Ergebnis soll sein:
4120135748353.pdf
4358758515351.pdf
4863486443843.pdf
(der jeweilige Ordner soll gleich bleiben)
Leider komme ich nicht wirklich voran, die Beiträge hier auf der Seite haben mir auch nicht weitergeholfen
Aber ich weiß dass es hier wahrhaftige Batch-Profis gibt.
Kann mir jemand einen Denkanstoß bzw. eine Lösungsmöglichkeit anbieten?
Vielen lieben Dank vorab!
die uebeltat
@edit: Ich wollte nicht unhöflich wirken, Entschuldigung (:
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Kommentar vom Moderator Biber am 29.02.2012 um 21:30:56 Uhr
Grummelnd verschoben von "Tools & Utilities" nach "Bätscht mir ma Shnell"
Content-ID: 181261
Url: https://administrator.de/forum/per-batch-dateinamen-nach-x-zeichen-abschneiden-endung-beibehalten-181261.html
Ausgedruckt am: 22.12.2024 um 17:12 Uhr
11 Kommentare
Neuester Kommentar
[OT]
Ich verschieb den Beitrag mal ins richtige Forum - wahrscheinlich sind dir schon ein paar Oneliner geliefert worden, bevor ich damit fertig bin.
Dennoch - ich kann mir nicht vorstellen, dass dazu kein Musterlösungs-Beispiel in unserem Forum zu finden gewesen wäre.
Grüße
Biber
[/OT]
Zitat von @uebeltat:
Ich habe tausende PDF-Dateien, alle unterschiedlich lang und in verschiedenen Ordnern...
Sind die denn wenigstens gleich breit? Denn "Batch" heisst eigentlich "Stapel" und eine gleiche Breite würde das Stapeln erleichtern.Ich habe tausende PDF-Dateien, alle unterschiedlich lang und in verschiedenen Ordnern...
Leider komme ich nicht wirklich voran, die Beiträge hier auf der Seite haben mir auch nicht weitergeholfen
Hmm - was hast du denn mit den Beiträgen gemacht? Lesen war es wohl kaum.Aber ich weiß dass es hier wahrhaftige Batch-Profis gibt.
Aber auch echte Batch-Prolls.... wenn die dich beim Posten ohne Hallo und im Bereich "Tools & Utilities" erwischen, dann duzen die dich.Ich verschieb den Beitrag mal ins richtige Forum - wahrscheinlich sind dir schon ein paar Oneliner geliefert worden, bevor ich damit fertig bin.
Dennoch - ich kann mir nicht vorstellen, dass dazu kein Musterlösungs-Beispiel in unserem Forum zu finden gewesen wäre.
Grüße
Biber
[/OT]
Hallo uebeltat und Biber!
Der heutige "bastla to go" :
Annahme: Es sollen alle zu findenden PDF-Dateien verarbeitet werden und es gibt keine, in deren Name ein "!" vorkommt.
Solange das "
Grüße
bastla
[Edit] @Biber: Sag doch was ... [/Edit]
Der heutige "bastla to go" :
@echo off & setlocal enabledelayedexpansion
set "Ordner=D:\Ordner unter dem 1000e PDF-Dateien liegen"
set "Typ=pdf"
set /a Stellen=13
for /f "delims=" %%i in ('dir /s/b/a-d "%Ordner%\*.%Typ%"') do (
set "Name=%%~ni"
echo ren "%%i" "!Name:~,%Stellen%!%%~xi"
)
Solange das "
echo
" vor dem "ren
" steht, wird (zum Testen) das Umbenennen nur als Befehl angezeigt, aber noch nicht durchgeführt ...Grüße
bastla
[Edit] @Biber: Sag doch was ... [/Edit]
Moin uebeltat,
na schön - die Kurzfassung eines möglichen Lösungsweges ist in folgender Demo am CMD-Prompt erkennbar:
Wenn es denn für Unterverzeichnisse sein soll: dann noch eine FOR/D-oder FOR/R Anweisung vorschalten.
Details findest du für die %Variablen% und "SubString"-Mimik in der Hilfe SET/?
Für FOR, FOR/F und FOR /D natürlich unter FOR/? -oder- hier im Forum in Friemlers Tutorial zur FOR-Anweisung (in "Batch & Shell")
Bitte versuche mal - für einen überschaubaren Zeitraum, z.B. 2 Stunden- dich deinem konkreten Problem etwas anzunähern und einen Ansatz, einen ehrenvollen Versuch hier zu posten.
Denn wenn du es einmal verstanden hast, dann wirst du es auch auf andere Problemchen transferieren können.
Wenn du gar nicht klarkommst -> wir sind hier.
Grüße
Biber
na schön - die Kurzfassung eines möglichen Lösungsweges ist in folgender Demo am CMD-Prompt erkennbar:
d:\temp>for %i in (i:*.pdf) do @(set "fname=%~ni" & @echo ren "%~fi" "!fname:~,7!.*")
ren "i:\Dokus\Busobj.forumtopics\Prompt_ALL.pdf" "Prompt_.*"
ren "i:\Dokus\Busobj.forumtopics\DateLOVs.pdf" "DateLOV.*"
ren "i:\Dokus\Busobj.forumtopics\Excel_Universe.pdf" "Excel_U.*"
ren "i:\Dokus\Busobj.forumtopics\Rolling_12.pdf" "Rolling.*"
ren "i:\Dokus\Busobj.forumtopics\Dynamic_Universe.pdf" "Dynamic.*"
ren "i:\Dokus\Busobj.forumtopics\Cascading_Prompts.pdf" "Cascadi.*"
- Der Oneliner wurde von mir am CMD-Prompt im Verzeichnis d:\temp eingetippselt - also nur die erste Zeile nach dem "d:\temp>"
- durchgenudelt werden alle "(i:\*.pdf")-Dateien in dem auf i: zufällig aktiven Verzeichnis
- jeden Namen (ohne Endung) ermittele ich als %~ni" und speichere ihn in eine Variable %fname%
- von %fname% erhalte ich die ersten 8 Zeichen als %fname:~7% oder, wenn es innerhalb derselben CMD-Zeile sein soll, als !fname:~7! (wenn EnableDelayedExpansion aktiviert ist- bei mir defaultmäßig)
- damit kann ich ein REName zusammenstoppeln.
Wenn es denn für Unterverzeichnisse sein soll: dann noch eine FOR/D-oder FOR/R Anweisung vorschalten.
Details findest du für die %Variablen% und "SubString"-Mimik in der Hilfe SET/?
Für FOR, FOR/F und FOR /D natürlich unter FOR/? -oder- hier im Forum in Friemlers Tutorial zur FOR-Anweisung (in "Batch & Shell")
Bitte versuche mal - für einen überschaubaren Zeitraum, z.B. 2 Stunden- dich deinem konkreten Problem etwas anzunähern und einen Ansatz, einen ehrenvollen Versuch hier zu posten.
Denn wenn du es einmal verstanden hast, dann wirst du es auch auf andere Problemchen transferieren können.
Wenn du gar nicht klarkommst -> wir sind hier.
Grüße
Biber
Moin bastla,
*grummel*... ich wollte es ja nicht heraufbeschwören, aber ich habe fast mit dir gerechnet...
Denn dann werden Dateien der Form "01234567890123[Leerzeichen}.pdf angelegt.
Das funktioniert schmerzfrei - aber einige Programme (auch PDF-verarbeitende!) gehen bei dem Namen auf die Bretter.
Biber
*grummel*... ich wollte es ja nicht heraufbeschwören, aber ich habe fast mit dir gerechnet...
Annahme: Es sollen alle zu findenden PDF-Dateien verarbeitet werden und es gibt keine, in deren Name ein "!" vorkommt.
Zusatzannahme: es ist nicht ausgerechnet das 14te Zeichen ein Leerzeichen.Denn dann werden Dateien der Form "01234567890123[Leerzeichen}.pdf angelegt.
Das funktioniert schmerzfrei - aber einige Programme (auch PDF-verarbeitende!) gehen bei dem Namen auf die Bretter.
Grüße
bastla
Grüße zurückbastla
Biber
Aloha bastla,
da ich gerade beim Bäcker war, wie sieht's aus mit eventuell im Nachhinein enstehenden Doppelten?
Wobei die Frage eher an den TE gehen müsste. aber was meinte er mit
Entweder will ich den Motor oder das ganze Auto ...
greetz André
da ich gerade beim Bäcker war, wie sieht's aus mit eventuell im Nachhinein enstehenden Doppelten?
Wobei die Frage eher an den TE gehen müsste. aber was meinte er mit
Kann mir jemand einen Denkanstoß bzw. eine Lösungsmöglichkeit anbieten
?Entweder will ich den Motor oder das ganze Auto ...
greetz André
Zitat von @Sisomyz:
Hallo,
bin zufällig über diese Antwort gestolpert... Gibt es auch einen Weg die letzten 10 Zeichen des Dateinamens zu behalten?
Danke
Gruß siso
Hallo,
bin zufällig über diese Antwort gestolpert... Gibt es auch einen Weg die letzten 10 Zeichen des Dateinamens zu behalten?
Danke
Gruß siso
@echo off &setlocal enabledelayedexpansion
for %%a in ("d:\ordner\*.pdf") do (set "basename=%%~na" &ren "%%a" "!basename:~-10!%%~xa")