Dateinamen Umbenennen nach Ersetzten
Hallo,
ich experimentiere ein wenig und bin ein einem Punkt, wo ich nicht weiter weiß.
Ich lese ein Dateinamen (DateiName) ein, aus der Mitte der Dateinamen entnehme ich nur die Buchstaben (AZ) , diese forme ich um (AZ5) und möchte die Ausgang Buchstaben (AZ) mit den modifizierten Buchstaben (AZ5) ersetzten. Danach möchte ich Org. Dateinamen mit den Neudateinamen umbenennen.
Zeile 37 macht mir Probleme, bekomme es einfach nicht gebacken wie AZ mit AZ5 ersetzt werden kann.
Egal wie ich es anstelle ob mit %AZ%=%AZ5% oder irgendwie anders, es funktioniert nicht.
Nehme ich die "Nacken" Buchstaben funktioniert es nicht.
Hoffe man kann mir bei dem "kleinen" Problem weiter Helfen.
Mein Code
ich experimentiere ein wenig und bin ein einem Punkt, wo ich nicht weiter weiß.
Ich lese ein Dateinamen (DateiName) ein, aus der Mitte der Dateinamen entnehme ich nur die Buchstaben (AZ) , diese forme ich um (AZ5) und möchte die Ausgang Buchstaben (AZ) mit den modifizierten Buchstaben (AZ5) ersetzten. Danach möchte ich Org. Dateinamen mit den Neudateinamen umbenennen.
Zeile 37 macht mir Probleme, bekomme es einfach nicht gebacken wie AZ mit AZ5 ersetzt werden kann.
Egal wie ich es anstelle ob mit %AZ%=%AZ5% oder irgendwie anders, es funktioniert nicht.
Nehme ich die "Nacken" Buchstaben funktioniert es nicht.
Hoffe man kann mir bei dem "kleinen" Problem weiter Helfen.
Mein Code
@echo off & setlocal enabledelayedexpansion & title %~n0
cls
echo.>1234ABCD5678.log
echo.>00Blub00.log
for /f "delims=" %%a in ('dir /b /a-d "*.log"') do (
set DateiName=%%a
echo DateiName: !DateiName!
:: Zahlen filtern
for /f "delims=1234567890 tokens=1,2" %%i in ("%%a") do (
:: Nur Buchstaben
set AZ=%%i
echo Buchstaben: !AZ!
echo.
)
:: Extrahieren
set AZ1=!AZ:~0,1!
set AZ2=!AZ:~1,1!
set AZ3=!AZ:~2,1!
set AZ4=!AZ:~3,1!
echo AZ1: !AZ1!
echo AZ2: !AZ2!
echo AZ3: !AZ3!
echo AZ4: !AZ4!
echo.
:: Zusammensetzen
set AZ5=!AZ1!-!AZ2!-!AZ3!-!AZ4!
echo AZ5: !AZ5!
echo.
:: Ersetzten
REM set NeueDateiname:!DateiName:ABCD=-A-B-C-D-!
set NeueDateiName:!DateiName:!AZ!=!AZ5!!
echo NeueDateiname: !NeueDateiname!
:: Umbenennen
echo ren %DateiName% %NeueDateiName%
)
pause
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 243832
Url: https://administrator.de/forum/dateinamen-umbenennen-nach-ersetzten-243832.html
Ausgedruckt am: 20.12.2024 um 17:12 Uhr
9 Kommentare
Neuester Kommentar
Hallo batchnewbie,
Was glaubst du wie die cmd mit den ganzen Ausrufezeichen umgeht?
Bedenke dass Ausrufezeichen paarweise behandelt werden. Also !DateiName:! als Variable, !=! als Variable und !! als ... ähm ... nix. Und was soll der Doppelpunkt hinter NeueDateiName? (=?)
ungetestet:
Dass Prozentzeichenexpansion in Zeile 41 auch nicht funktionieren kann, sollte einleuchten.
Grüße
rubberman
Was glaubst du wie die cmd mit den ganzen Ausrufezeichen umgeht?
set NeueDateiName:!DateiName:!AZ!=!AZ5!!
ungetestet:
for /f "delims=" %%i in ("!AZ!") do for /f "delims=" %%j in ("!AZ5!") do set "NeueDateiName=!DateiName:%%i=%%j!"
Dass Prozentzeichenexpansion in Zeile 41 auch nicht funktionieren kann, sollte einleuchten.
Grüße
rubberman
Mit einfachen set NeueDateiname=!DateiName:ABCD=A-B-C-D! funktioniert es ja, werden die beiden Variablen (AZ & AZ5) nicht gelesen?
Nein, sie werden nicht gelesen. Wie die Zeile interpretiert wird, habe ich dir oben gezeigt. Jeweils der Ausdruck zwischen zwei aufeinanderfolgenden Ausrufezeichen wird versucht als Variable zu expandieren. Nochmal in Farbe zum besseren Verständnis:!DateiName:!AZ!=!AZ5!!
Jetzt klar geworden?
Grüße
rubberman