uebeltat
Goto Top

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 face-sad

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 (:
Kommentar vom Moderator Biber am Feb 29, 2012 um 20:30:56 Uhr
Grummelnd verschoben von "Tools & Utilities" nach "Bätscht mir ma Shnell"

Content-Key: 181261

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

Printed on: April 16, 2024 at 19:04 o'clock

Member: Biber
Biber Feb 29, 2012 at 20:28:30 (UTC)
Goto Top
[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.
Leider komme ich nicht wirklich voran, die Beiträge hier auf der Seite haben mir auch nicht weitergeholfen face-sad
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]
Member: uebeltat
uebeltat Feb 29, 2012 at 20:31:58 (UTC)
Goto Top
Hallo Biber,

danke dass du meinen Beitrag in die richtige Richtung bringst. Gelesen habe ich, zum Ziel hat mich jedoch kein Beitrag geführt. Was ich hier gefunden habe ist nicht das, was ich suche. Daher wende ich mich vertrauensvoll an das Forum.

Zu deiner Frage: Ja, alle vorhandenen Dateien sollen nach der gleichen Anzahl an Zeichen abgeschnitten werden.
Member: bastla
bastla Feb 29, 2012 at 20:56:37 (UTC)
Goto Top
Hallo uebeltat und Biber!

Der heutige "bastla to go" face-wink:
@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"  
)
Annahme: Es sollen alle zu findenden PDF-Dateien verarbeitet werden und es gibt keine, in deren Name ein "!" vorkommt.

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 ... face-wink [/Edit]
Member: Biber
Biber Feb 29, 2012 at 20:57:03 (UTC)
Goto Top
Moin uebeltat,

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
Member: Biber
Biber Feb 29, 2012 at 21:03:24 (UTC)
Goto Top
Moin bastla,

Zitat von @bastla:
Hallo uebeltat und Biber!

Der heutige "bastla to go" face-wink:
*grummel*... ich wollte es ja nicht heraufbeschwören, aber ich habe fast mit dir gerechnet... face-wink

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ück
Biber
Member: Skyemugen
Skyemugen Mar 01, 2012 at 08:03:44 (UTC)
Goto Top
Aloha bastla,

da ich gerade beim Bäcker war, wie sieht's aus mit eventuell im Nachhinein enstehenden Doppelten? face-wink

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é
Member: bastla
bastla Mar 01, 2012 at 09:57:20 (UTC)
Goto Top
Hallo Skye!
wie sieht's aus mit eventuell im Nachhinein enstehenden Doppelten?
Ich hoffe doch, dass sich der TE diese Frage bereits im Vorhinein gestellt und beantwortet hat ... face-wink

Grüße
bastla
Member: uebeltat
uebeltat Mar 05, 2012 at 18:21:15 (UTC)
Goto Top
Ich seid die Besten, vielen Dank! face-smile

Kurz noch die Antwort auf die Fragen: Das 14. Zeichen ist kein Leerzeichen und Doubletten gibt es auch nicht, da die ersten 13 Stellen immer unterschiedlich sind...

Vielen vielen Dank face-smile
Member: Sisomyz
Sisomyz Nov 03, 2022 at 13:49:52 (UTC)
Goto Top
Hallo,
bin zufällig über diese Antwort gestolpert... Gibt es auch einen Weg die letzten 10 Zeichen des Dateinamens zu behalten?

Danke
Gruß siso
Mitglied: 4400667902
4400667902 Nov 03, 2022 updated at 14:06:48 (UTC)
Goto Top
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

@echo off &setlocal enabledelayedexpansion
for %%a in ("d:\ordner\*.pdf") do (set "basename=%%~na" &ren "%%a" "!basename:~-10!%%~xa")  
https://www.dostips.com/DtTipsStringManipulation.php
Member: Sisomyz
Sisomyz Nov 07, 2022 at 10:03:09 (UTC)
Goto Top
super, vielen Dank, das hab ich gesucht!