Dateien in Unterverzeichnissen konvertieren und kopieren
Hallo Liebe Community,
mit dem Skript unten möchte ich alle FLAC Dateien aus %src_dir%\Interpreter_x\Album_y\Datei_z.flac in
%dest_dir%\Interpreter_x\Album_y\Datei_z.mp3 kopieren/konvertieren.(Interpreter_x, Album_y und Datei_z stehen für beliebige Verzeinisse, Dateien)
Leider landen momentan alle konvertierten MP3 Dateien unter %dest_dir%\Datei_z.mp3
Da ich mich mit String-Operatoren nicht auskenne wollte ich diesbezüglich um Eure Hilfe bitten.
Die Zieldatei wird im letzten Parameter von lame als "%dest_dir%\%%~nx.mp3"festgelegt, das sollte bearbeitet werden.
Vielen Dank für Eure Hilfe im Voraus!
unicum
@echo on
::
set src_dir=g:\test\film
set temp_dir=g:\temp
set dest_dir=d:\archiv
set exedir=g:\test
::
xcopy %src_dir% %dest_dir% /T /E /I
for /r %src_dir% %%x in (dir /b *.flac) do (
%exedir%\flac -d "%%x" -o "%temp_dir%\%%~nx"
%exedir%\lame -V2 "%temp_dir%\%%~nx" "%dest_dir%\%%~nx.mp3"
del "%temp_dir%\%%~nx"
)
mit dem Skript unten möchte ich alle FLAC Dateien aus %src_dir%\Interpreter_x\Album_y\Datei_z.flac in
%dest_dir%\Interpreter_x\Album_y\Datei_z.mp3 kopieren/konvertieren.(Interpreter_x, Album_y und Datei_z stehen für beliebige Verzeinisse, Dateien)
Leider landen momentan alle konvertierten MP3 Dateien unter %dest_dir%\Datei_z.mp3
Da ich mich mit String-Operatoren nicht auskenne wollte ich diesbezüglich um Eure Hilfe bitten.
Die Zieldatei wird im letzten Parameter von lame als "%dest_dir%\%%~nx.mp3"festgelegt, das sollte bearbeitet werden.
Vielen Dank für Eure Hilfe im Voraus!
unicum
@echo on
::
set src_dir=g:\test\film
set temp_dir=g:\temp
set dest_dir=d:\archiv
set exedir=g:\test
::
xcopy %src_dir% %dest_dir% /T /E /I
for /r %src_dir% %%x in (dir /b *.flac) do (
%exedir%\flac -d "%%x" -o "%temp_dir%\%%~nx"
%exedir%\lame -V2 "%temp_dir%\%%~nx" "%dest_dir%\%%~nx.mp3"
del "%temp_dir%\%%~nx"
)
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 150650
Url: https://administrator.de/forum/dateien-in-unterverzeichnissen-konvertieren-und-kopieren-150650.html
Ausgedruckt am: 03.05.2025 um 12:05 Uhr
7 Kommentare
Neuester Kommentar
Hallo unicum und willkommen im Forum!
Vielleicht geht es so besser (und sicherer / kontrollierter):
Falls nicht beide Konvertierungsschritte erfolgreich (mit Errorlevel 0) beendet wurden, bleibt die (kopierte) Ausgangsdatei in "%temp_dir%" erhalten ...
Grüße
bastla
P.S.: Der Sinn der "
Vielleicht geht es so besser (und sicherer / kontrollierter):
@echo on & setlocal
::
set src_dir=g:\test\film
set temp_dir=g:\temp
set dest_dir=d:\archiv
set exedir=g:\test
::
xcopy "%src_dir%" "%dest_dir%\" /E
for /r %src_dir% %%x in (*.flac) do (
"%exedir%\flac" -d "%%x" -o "%temp_dir%\%%~nx"
if not errorlevel 1 "%exedir%\lame" -V2 "%temp_dir%\%%~nx" "%dest_dir%\%%~nx.mp3" && del "%temp_dir%\%%~nx"
)
Grüße
bastla
P.S.: Der Sinn der "
xcopy
"-Option "/T
" war mir in diesem Zusammenhang nicht klar, weshalb ich sie weggelassen habe ...
Hallo unicum!
Sorry - da war ich zwar schnell, aber ziemlich auf dem Holzweg ...
Versuch es damit:
Grüße
bastla
Sorry - da war ich zwar schnell, aber ziemlich auf dem Holzweg ...
Versuch es damit:
@echo on & setlocal
::
set src_dir=g:\test\film
set temp_dir=g:\temp
set dest_dir=d:\archiv
set exedir=g:\test
::
echo xcopy "%src_dir%" "%dest_dir%\" /T /E
for /r "%src_dir%" %%x in (*.flac) do set "Full=%%~dpnx" & call :ProcessFile "%%x"
goto :eof
:ProcessFile
call set "Rel=%%Full:%src_dir%\=%%"
"%exedir%\flac" -d %1 -o "%temp_dir%\%~n1"
if not errorlevel 1 "%exedir%\lame" -V2 "%temp_dir%\%~n1" "%dest_dir%\%Rel%.mp3" && del "%temp_dir%\%~n1"
goto :eof
bastla

Hallo unicum,
weder dein noch bastlas Batch berüchsichtigt den kompletten aktuellen Pfad,
diese ungetestete Version tut es:
Gruß
LotPings
EDit: Danke für den Hinweis batsla, habs geändert.
weder dein noch bastlas Batch berüchsichtigt den kompletten aktuellen Pfad,
diese ungetestete Version tut es:
@echo on & setlocal
::
set src_dir=g:\test\film
set temp_dir=g:\temp
set dest_dir=d:\archiv
set exedir=g:\test
::
for /r %src_dir% %%x in (*.flac) do Call :Proc "%%~fx"
Pause
Goto :Eof
:Proc
Set "FlacPath=%~dp1"
Call Set "MpgPath=%%FlacPath:%src_dir%=%dest_dir%%%"
"%exedir%\flac" -d %1 -o "%temp_dir%\%~n1"
if not errorlevel 1 "%exedir%\lame" -V2 "%temp_dir%\%~n1" "%MpgPath%%~n1.mp3" && del "%temp_dir%\%~n1"
Gruß
LotPings
EDit: Danke für den Hinweis batsla, habs geändert.

Zitat von @unicum:
Hallo LotPings, hallo bastla,
ich habe noch in LotPings`s Skript die Zeile
Call Set "MpgPath=%%FlacPath:%src_dir%=%dest_dir%%%"
mit dem roten % ergänzt und nun funktionieren beide Skripten. Vielen Dank für eure Hilfe!!
Sorry, weiss nicht wo das % abhanden gekommen ist Hallo LotPings, hallo bastla,
ich habe noch in LotPings`s Skript die Zeile
Call Set "MpgPath=%%FlacPath:%src_dir%=%dest_dir%%%"
mit dem roten % ergänzt und nun funktionieren beide Skripten. Vielen Dank für eure Hilfe!!
> weder dein noch bastlas Batch berüchsichtigt den kompletten aktuellen Pfad,
Wirkt das irgendwo aus? Momentan tun beide Skripten das selbe.
Du musst auf die Zeiten achten, das bezog sich auf bastlas ersten Batch, den zweiten 4 min vor meinem gepostet konnte ich beim Schreiben noch nicht sehen.Wirkt das irgendwo aus? Momentan tun beide Skripten das selbe.
Nochmals danke euch Beiden!
GerneGruß
LotPings