also (R4) hätte spätestens beim dritten befehl nicht funktioniert,
da der input die orginal datei war und nicht die verarbeitete datei verwendet wurde,
die beim zweiten befehl erzeugt wurde.
das ist was an einer fehleranalyso so viel "spaß" macht,
alles läuft durch, doch dann fällt auf das ein input falsch gewählt wurde,
und schon sind 100derte dateien im eimer...
theoretisch könnte man mit MkvMerge die fertigen dateien nochmal prüfen,
ob alles dort ist, wo man es erwartet.
aber meine lust 100.000 schutzschichten einzubauen hält sich in grenzen,
wenn mir nicht einer den kernbefehl mundgerecht vorfertigt,
so werde ich sowas langfristig ehr nicht einbauen*...
* nicht böse gemeint 
----
script_fused_r6.cmd
- @echo off
- :: 2023-02-10 (R6b, HQ-LQ)
- :: Normalisierungs-Script by HQ-LQ for Neugier
- :: https://gleitz.info/forum/index.php?thread/48532
- :: https://gleitz.info/forum/index.php?thread/48536
- cd /d "%~dp0"
- @set "xD= @echo. && @set x && @pause "
- set "xMkvMerge=%~dp0_tools\mkvmerge.exe"
- set "xFFmpeg=%~dp0_tools\ffmpeg.exe"
- set "xDIR0=_0.org"
- set "xDIR1=_1.edit"
- set "xDIR2=_2.neu"
- ::-------------------------------------------------------------------------------------------------
- if "%~1"=="" goto :loop_end
- :loop
- if exist "%~dp1%xDIR0%" ( echo.[Ordner "%~dp1%xDIR0%" wurde nicht entfernt.] && echo.[breche ab...] && echo. && pause && exit )
- if exist "%~dp1%xDIR1%" ( echo.[Ordner "%~dp1%xDIR1%" wurde nicht entfernt.] && echo.[breche ab...] && echo. && pause && exit )
- if exist "%~dp1%xDIR2%" ( echo.[Ordner "%~dp1%xDIR2%" wurde nicht entfernt.] && echo.[breche ab...] && echo. && pause && exit )
- if not exist "%~dp1%xDIR0%" ( md "%~dp1%xDIR0%" )
- if not exist "%~dp1%xDIR1%" ( md "%~dp1%xDIR1%" )
- if not exist "%~dp1%xDIR2%" ( md "%~dp1%xDIR2%" )
- :: @set "x.IN.0=%~1"
- :: @for /f %%a IN (' PowerShell " (Get-FileHash -Algorithm SHA1 '%~1').Hash " ') DO (set "x.IN.0-hash=%%a")
- "%xFFmpeg%" -i "%~1" -c:a ac3 -b:a 384k "%~dp1%xDIR1%\%~n1.ac3"
- :: @if exist "%~dp1%xDIR1%\%~n1.ac3" ( set "x.IN.1.ac3=%~dp1%xDIR1%\%~n1.ac3" ) else ( "x.IN.1.ac3=~not found~" )
- :: @if exist "%~dp1%xDIR1%\%~n1.ac3" ( @for /f %%a IN (' PowerShell " (Get-FileHash -Algorithm SHA1 '%~dp1%xDIR1%\%~n1.ac3').Hash " ') DO (set "x.IN.1.ac3-hash=%%a") )
- if exist "%~dp1%xDIR1%\%~n1.ac3" ( "%xMkvMerge%" -o "%~dp1%xDIR1%\%~n1.mkv" --language 0:und -a !ger,eng,fre,rus,spa,ita,jpn,chi,nor,pol,dan,kor,lat,dut,por,fin,swe,ara,bul,cze,gre,est,heb,hin,hun,ind,lit,lav,mal,slo,slv,tam,tel,tha,tur,ukr,vie,rum -s !eng,fre,rus,spa,ita,jpn,chi,nor,pol,dan,kor,lat,dut,por,fin,swe,ara,bul,cze,gre,est,heb,hin,hun,ind,lit,lav,mal,slo,slv,tam,tel,tha,tur,ukr,vie,rum "%~1" --language 0:ger --track-name 0:Surround "%~dp1%xDIR1%\%~n1.ac3" )
- :: @if exist "%~dp1%xDIR1%\%~n1.mkv" ( set "x.IN.1.mkv=%~dp1%xDIR1%\%~n1.mkv" ) else ( "x.IN.1.mkv=~not found~" )
- :: @if exist "%~dp1%xDIR1%\%~n1.mkv" ( @for /f %%a IN (' PowerShell " (Get-FileHash -Algorithm SHA1 '%~dp1%xDIR1%\%~n1.mkv').Hash " ') DO (set "x.IN.1.mkv-hash=%%a") )
- "%xMkvMerge%" -o "%~dp1%xDIR2%\%~n1.mkv" --language 1:ger --track-name 1:forced --default-track 1:yes --language 2:ger --track-name 2:full --default-track 2:no --track-order 0:0,0:3,0:1,0:2 --no-global-tags --no-track-tags --title ^"^" "%~dp1%xDIR1%\%~n1.mkv"
- :: @if exist "%~dp1%xDIR2%\%~n1.mkv" ( set "x.IN.2.mkv=%~dp1%xDIR2%\%~n1.mkv" ) else ( "x.IN.2.mkv=~not found~" )
- :: @if exist "%~dp1%xDIR2%\%~n1.mkv" ( @for /f %%a IN (' PowerShell " (Get-FileHash -Algorithm SHA1 '%~dp1%xDIR2%\%~n1.mkv').Hash " ') DO (set "x.IN.2.mkv-hash=%%a") )
-
- :: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- :: REM orginal Daten werden gesichert, in %xDIR0% verschoben
- :: move /y "%~1" "%~dp1%xDIR0%" >NUL
- REM orginal Daten werden GELÖSCHT!
- if exist "%~1" ( del /f "%~1" )
- REM Neue-Dateien werden ins Quellverzeichnis verschoben
- move /y "%~dp1%xDIR2%\*.mkv" "%~dp1" >NUL
- REM Arbeits-Verzeichnisse werden GELÖSCHT!
- REM BackUp_Verzeichnis
- if exist "%~dp1%xDIR0%" ( rd /s /q "%~dp1%xDIR0%" )
- REM Arbeits_Verzeichnis
- if exist "%~dp1%xDIR1%" ( rd /s /q "%~dp1%xDIR1%" )
- REM Neue-Dateien_Verzeichnis
- if exist "%~dp1%xDIR2%" ( rd /s /q "%~dp1%xDIR2%" )
- shift
- if not "%~1"=="" goto :loop
- :loop_end
- ::-------------------------------------------------------------------------------------------------
- :end
- :: @echo. && @set x && @echo.
- echo. && echo.[end.]
- :: ping 0 -n 4 >nul
- :: pause
Alles anzeigen
---
so sieht n bissel nach chaos aus,
aber alle befehle mit @, sind für mich für eine fehleranalyse
wie du siehst, sind diese zum größsten teil mit :: auskommentiert/deaktiviert.
der @ befehl macht im grunde nichts, außer nur diesen einen befehl ausblenden,
änlich wie 'echo off' der alle befehle ausblendet.
darum zeckentfremde ich ihn für makierungen.
mit %xD% kann ich überall eine pause erzeugen, die mir gleich die variablen anzeigt (für debugging
)
ich habe platzhalter für die temporären verzeichnisse erstellt.
gegenende habe ich eine lösch/sicherungs routine eingebaut.
je wie diese auskommentiert wird, so sichert diese dateien,
oder LÖSCHT diese.
aktuell ist es auf löschen gestellt.
das ist auch der grund, warum diese 'REM'-kommentare hat,
die quasi die befehle erklärt.
das script sollte jetzt theoretisch funktionieren,
ich hoffe der input für den letzten befehl ist richtig,
jedenfalls macht der so mehr sinn.
---
edit:
hab noch ein paar befehle auskommentiert,
keine beeinträchtigung des scripts.