spidi-25
Goto Top

Dateinamen per Batch umbenennen 15 Zeichen vom Anfang behalten

Hallo allerseits,

ich habe ein Problem und das geht so:

Ein Programm erzeugt mir Dateien, die z. B. folgendermaßen aussehen:

1000_100_100_00 Muster.pdf
oder
1000_100_100_00 test.pdf

Dabei sind die ersten 15 Zeichen wichtig die ich behalten möchte, die Dateien befinden sich immer in Variablen Ordnern.

Ich suche also nach einer Möglichkeit, die Datei mittels Batchdatei so umbenennen damit nur noch 1000_100_100_00.pdf stehen bleibt

Viele Grüße,

Content-ID: 139793

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

Ausgedruckt am: 26.11.2024 um 12:11 Uhr

regedit19
regedit19 03.04.2010 um 13:48:41 Uhr
Goto Top
rename "C:\.........\.........\........\1000_100_100_00 Muster.pdf" "C:\.........\.........\........\1000_100_100_00.pdf"
Spidi-25
Spidi-25 03.04.2010 um 14:29:09 Uhr
Goto Top
die Dateien befinden sich immer in Variablen Ordnern.
Biber
Biber 03.04.2010 um 14:39:05 Uhr
Goto Top
Moin Spidi-25,

willkommen im Forum.
Zitat von @Spidi-25:
die Dateien befinden sich immer in Variablen Ordnern.
Ist doch berücksichtigt worden in regedits Antwort
rename "C:\.........\.........\........\1000_100_100_00 Muster.pdf" "C:\.........\.........\........\1000_100_100_00.pdf"
Die variablen Pfade sind angedeutet durch die "........\"s. face-wink

Nein, im Ernst - was gilt denn nun: die ersten 10 Zeichen behalten wie im Titel oder die ersten 15 laut Beitrag?
Und was bedeutet "variable Pfade"? Gibt es denn ein "oberstes Verzeichnis", unterhalb dessen alles spielt?
Oder wechselt es täglich von Laufwerk c:\irgendwo nach F:\Neverland und dann nach \\127.0.0.1\Cher?

Grüße
Biber

[Edit @bastla] Und wie soll ich ihn/sie/es jetzt dazu bringen, den Titel zu editieren?
Und was bedeutet "habe es nicht eilig?" Noch zu schlapp vom Fasten? *g EIN Rest-Tag nur noch... [/Edit]
bastla
bastla 03.04.2010 um 14:43:18 Uhr
Goto Top
Hallo Spidi-25 und willkommen im Forum!

Wenn Du ausgehend von einem Basisordner in diesem und allen Unterordnern Dateien nach dem angegebenen Muster umbenennen willst, dann etwa so:
for /r "D:\Dein Basisordner" %i in (????_???_???_??*.pdf) do @for /f "tokens=1*" %a in ("%~ni") do @if "%b" neq "" echo ren "%i" "%a%~xi"  
Mit dieser Zeile (direkt in der CMD-Shell eingegeben) erhältst Du eine Anzeige aller Umbenenn-Befehle - wenn das Ergebnis vernünftig aussieht, kannst Du das "echo" entfernen und damit die Befehle auch ausführen lassen.

Falls Du einen Batch daraus machen wolltest, einfach jedes vorkommende Prozentzeichen verdoppeln.

Grüße
bastla

[Edit] @Biber: Ich hab's heute nicht eilig ... face-wink [/Edit]

[Edit2]@Biber: "Noch zu schlapp vom Fasten?" Du wirst es nicht glauben, heuer hätte ich tatsächlich fast gefastet (zumindest stundenweise face-wink) [/Edit2]
Spidi-25
Spidi-25 03.04.2010 um 15:59:13 Uhr
Goto Top
danke für die schnelle Antwort

die Dateien befinden sich manchmal auf c:\ mal auf k:\ mal auf V:\

mit dem Befehl den ich als umb.cmd in c:\windows gespeichert habe kann ich mit einem commander in einem beliebigem Laufwerk ausführen

for %%f in (*_*.pdf) do @for /f "delims=test.pdf" %%n in ('echo %%~f') do move /y "%%~f" "%%n%%~xf"

geht es fast richtig, nur es geht nicht von den 15 Zeichen aus es entfernt mir nur den test aber das Leerzeichen bleibt.

das hat auch mal bastla in einem anderen beitrag geschrieben.
bastla
bastla 03.04.2010 um 16:23:53 Uhr
Goto Top
Hallo Spidi-25!

Wenn Dein Ansatz bis auf das "Leerzeichen"-Problem funktioniert, dann einfach
for %%f in (*_*.pdf) do @for /f %%n in ("%%~nf") do move "%%~f" "%%n%%~xf"
Und vielleicht kannst Du uns allen den Gefallen tun, den Titel auf in etwa "Dateien per Batch umbenennen - Teil des Namens bis zum ersten Leerzeichen behalten" ändern (es sei denn, Du wolltest Dich doch noch auf eine bestimmte Stellenanzahl festlegen face-wink) ...

Grüße
bastla

P.S.: Falls Du eine der beiden von mir verwendeten Formatierungsvarianten für die Batchzeilen nachahmenswert findest: ""-Formatierung ...
Spidi-25
Spidi-25 03.04.2010 um 23:17:50 Uhr
Goto Top
Vielen dank es funktioniert ob wohl ich den code nicht verstehe

und ich hätte eine frage zur meinem code? Wäre es nicht möglich, außer dem test auch noch das Lehrzeichen zu entfernen? Würde es für die Zukunft gerne wissen wollen, genau so wie bestimmte Zeichen vom Anfang behalten Rest löschen.

danke noch mal an bastla!!!!!!!!!!!!!!
bastla
bastla 03.04.2010 um 23:33:29 Uhr
Goto Top
Hallo Spidi-25!

Dein Code ist in der Form nicht verwendbar, da nicht wirklich "test.pdf", sondern jedes darin enthaltene Zeichen ("t", "e", ...) als Trennzeichen betrachtet wird - es war also nur Zufall, dass damit (fast) an der richtigen Stelle getrennt wurde (davor gibt es im Dateinamen ja nur Ziffern, "_" und eben ein Leerzeichen). Da das Leerzeichen und TAB defaultmäßig als Delimiter verwendet werden, habe ich in meinem Ansatz kein "delims=" benötigt - es könnte aber hinzugefügt werden und würde zum selben Ergebnis führen ...
Um tatsächlich zB die ersten 15 Zeichen zu behalten, müsste der Batch allerdings anders aussehen:
@echo off & setlocal
for %%f in (*_*.pdf) do set "Name=%%~nf" & call :ProcessFile "%%f"  
goto :eof

:ProcessFile
move %1 "%Name:~,15%%~x1"  
goto :eof
Mehr zum Thema "Teilstrings" findest Du mit "set /?" ...

Noch eine Anmerkung: Mit "move" wird im Fall des Falles eine bereits vorhandene gleichnamige Datei überschrieben - daher wäre im Zweifelsfall "ren" die sicherere Variante.

Grüße
bastla

P.S.: Denkst Du noch an den Threadtitel?
Spidi-25
Spidi-25 04.04.2010 um 00:06:07 Uhr
Goto Top
Genau das habe ich gesucht Danke

es ist so das Programm spukt mir nach dem Dateinamen ein Lehrzeichen aus, aber wen mal der PDF Mailer gewechselt wird und er es nicht mehr macht dann habe ich das Problem das ich die 15 Zeichen vom Anfang immer noch benötige. Aber die Antwort ist da der Code ist super und mit "ren" absolut hands up!!!!!!!!!!!!!