Dateiname entsprechend einem um x-Ebenen übergeordeten Ordnernamen umbenennen
Hallo Zusammen,
ich bin Batch-Amateur und komme bei folgendem Problem nicht weiter.
Ich will sehr viele Dateien, die in sehr vielen Ordnern abgelegt sind entsprechend dem Namen eines übergeordneten Ordners umbenennen.
Im Ordner Test sind sehr viele Unterordner abgelegt (z.B. Schmitt, Maier, Huber...). Diese enthalten alle jeweils den Ordner "Obst" mit den Unterordnern "Apfel" und "Birne".
Ordnerstruktur:
U:\Test\Schmitt\Obst\Apfel\Quelle_01.xlsx
U:\Test\Schmitt\Obst\Apfel\Quelle_02.xlsx
U:\Test\Schmitt\Obst\Apfel\Quelle...
U:\Test\Schmitt\Obst\Birne\...
U:\Test\Maier\Obst\Apfel\...
U:\Test\Maier\Obst\Birne\...
U:\Test\Huber\...
...
Alle Dateien in den Ordnern "Apfel" und "Birne" sollen umbenannt werden. Dabei soll der bestehende Dateiname mit dem übergeordneten Ordnernamen (z.B. Schmitt, Maier, Huber) kombiniert werden. Der neue Dateiname soll dann z.B. wie folgt lauten:
"Schmitt_Quelle_01.xlsx" oder "Maier_Quelle_05.xlsx"
Kann man eine Batch-Datei auch so gestalten, dass nachträglich ausgewählt werden kann, welche Ebene der Ordnerstruktur zur Namensgebung verwendet werden soll. Also dass zum Beispiel durch eine einfache Änderung der Batch-Datei auch folgende Dateinamen erzeugt werden können:
"Obst_Quelle_01.xlsx" oder "Obst_Quelle_05.xlsx"
Ich hoffe Ihr könnt mir weiterhelfen und wäre überaus dankbar über eine Antwort.
Viele Grüße
Booster07
ich bin Batch-Amateur und komme bei folgendem Problem nicht weiter.
Ich will sehr viele Dateien, die in sehr vielen Ordnern abgelegt sind entsprechend dem Namen eines übergeordneten Ordners umbenennen.
Im Ordner Test sind sehr viele Unterordner abgelegt (z.B. Schmitt, Maier, Huber...). Diese enthalten alle jeweils den Ordner "Obst" mit den Unterordnern "Apfel" und "Birne".
Ordnerstruktur:
U:\Test\Schmitt\Obst\Apfel\Quelle_01.xlsx
U:\Test\Schmitt\Obst\Apfel\Quelle_02.xlsx
U:\Test\Schmitt\Obst\Apfel\Quelle...
U:\Test\Schmitt\Obst\Birne\...
U:\Test\Maier\Obst\Apfel\...
U:\Test\Maier\Obst\Birne\...
U:\Test\Huber\...
...
Alle Dateien in den Ordnern "Apfel" und "Birne" sollen umbenannt werden. Dabei soll der bestehende Dateiname mit dem übergeordneten Ordnernamen (z.B. Schmitt, Maier, Huber) kombiniert werden. Der neue Dateiname soll dann z.B. wie folgt lauten:
"Schmitt_Quelle_01.xlsx" oder "Maier_Quelle_05.xlsx"
Kann man eine Batch-Datei auch so gestalten, dass nachträglich ausgewählt werden kann, welche Ebene der Ordnerstruktur zur Namensgebung verwendet werden soll. Also dass zum Beispiel durch eine einfache Änderung der Batch-Datei auch folgende Dateinamen erzeugt werden können:
"Obst_Quelle_01.xlsx" oder "Obst_Quelle_05.xlsx"
Ich hoffe Ihr könnt mir weiterhelfen und wäre überaus dankbar über eine Antwort.
Viele Grüße
Booster07
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 319426
Url: https://administrator.de/contentid/319426
Ausgedruckt am: 25.11.2024 um 18:11 Uhr
3 Kommentare
Neuester Kommentar
Hallo Markus,
so sieht man sich wieder.
Das nächste Script:
In Zeile 5 kannst Du einstellen, wie viele Verzeichnisebenen von der Datei aus nach oben gegangen wird, um die Namensergänzung zu erzeugen. Ein Wert von 3 wäre die Ebene mit den Verzeichnissen
Grüße
Friemler
so sieht man sich wieder.
Das nächste Script:
@echo off & setlocal
set "RootPath=U:\Test"
set "RenDirs="Apfel" "Birne""
set "LevelCnt=2"
for /d /r "%RootPath%" %%a in (%RenDirs%) do (
for %%b in ("%%a\*.*") do (
call :ProcessFile "%%b"
)
)
exit /b 0
:ProcessFile
call :GetPathLevel "%~1" %LevelCnt% LevelName
ren "%~1" "%LevelName%_%~nx1"
exit /b 0
:GetPathLevel
setlocal
set "TmpPath=%~dp1"
set "DirName="
set /a Cnt=0
:Loop
set "TmpPath=%TmpPath:~0,-1%"
for %%z in ("%TmpPath%") do set "DirName=%%~nxz"
call set "TmpPath=%%TmpPath:%DirName%=%%"
set /a Cnt+=1
if %Cnt% lss %~2 goto :Loop
endlocal & set "%~3=%DirName%"
exit /b 0
In Zeile 5 kannst Du einstellen, wie viele Verzeichnisebenen von der Datei aus nach oben gegangen wird, um die Namensergänzung zu erzeugen. Ein Wert von 3 wäre die Ebene mit den Verzeichnissen
Schmitt
, Maier
und Huber
. Ein Wert von 2 wäre die Ebene mit den Obst
-Verzeichnissen.Grüße
Friemler