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,
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,
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 139793
Url: https://administrator.de/contentid/139793
Ausgedruckt am: 26.11.2024 um 12:11 Uhr
9 Kommentare
Neuester Kommentar
Moin Spidi-25,
willkommen im Forum.
Ist doch berücksichtigt worden in regedits Antwort
Die variablen Pfade sind angedeutet durch die "........\"s.
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]
willkommen im Forum.
Ist doch berücksichtigt worden in regedits Antwort
rename "C:\.........\.........\........\1000_100_100_00 Muster.pdf" "C:\.........\.........\........\1000_100_100_00.pdf"
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]
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:
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 "
Falls Du einen Batch daraus machen wolltest, einfach jedes vorkommende Prozentzeichen verdoppeln.
Grüße
bastla
[Edit] @Biber: Ich hab's heute nicht eilig ... [/Edit]
[Edit2]@Biber: "Noch zu schlapp vom Fasten?" Du wirst es nicht glauben, heuer hätte ich tatsächlich fast gefastet (zumindest stundenweise ) [/Edit2]
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"
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 ... [/Edit]
[Edit2]@Biber: "Noch zu schlapp vom Fasten?" Du wirst es nicht glauben, heuer hätte ich tatsächlich fast gefastet (zumindest stundenweise ) [/Edit2]
Hallo Spidi-25!
Wenn Dein Ansatz bis auf das "Leerzeichen"-Problem funktioniert, dann einfach
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 ) ...
Grüße
bastla
P.S.: Falls Du eine der beiden von mir verwendeten Formatierungsvarianten für die Batchzeilen nachahmenswert findest: ""-Formatierung ...
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"
Grüße
bastla
P.S.: Falls Du eine der beiden von mir verwendeten Formatierungsvarianten für die Batchzeilen nachahmenswert findest: ""-Formatierung ...
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 "
Um tatsächlich zB die ersten 15 Zeichen zu behalten, müsste der Batch allerdings anders aussehen:
Mehr zum Thema "Teilstrings" findest Du mit "
Noch eine Anmerkung: Mit "
Grüße
bastla
P.S.: Denkst Du noch an den Threadtitel?
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
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?