Per IF Variable in Batch-Datei prüfen

mischaef

Kassettenkind
Teammitglied
Registriert
Aug. 2012
Beiträge
5.930
Moin zusammen,

ich würde gerne in einer Batch-Datei eine Variable mit einem festgelegten Wert überprüfen lassen und bei Übereinstimmung eine Aktion starten. Nur klappt das nicht wirklich, dass Script läuft einfach durch und schließt sich dann.

Nachdem was ich im Netz so gefunden habe, sollte das so funktionieren:

Code:
if "%%~ni" == "XYZ"
(
     AKTION
)

%%~ni ist der Dateiname der Datei, mit der etwas gemacht werden soll. Die Variable wird auch richtig gefüllt, das habe ich schon kontrolliert. Wenn dieser asl "XYZ" ist, soll eine Aktion starten, ansonsten soll einfach der nächste Punkt im Script abgearbeitet werden.

Hat jemand eine Idee, was ich noch machen kann?

Besten dank

Michael
 
Nur klappt das nicht wirklich, dass Script läuft einfach durch

Das musst du genauer erläutern. Was klappt nicht? Was soll passieren?
 
@firexs
Hatte ich oben ja schon geschrieben, das Script läuft einfach durch und beendet sich direkt. Es hält nicht mal bei pause an.

@ryan_blackdrago
Nein, das funzt auch nicht. Ich hole mal etwas weiter aus:

Mit dem Script sollen meine Sataufnahmen umgerechnet werden. Bisher war es immer so, dass ich nur solche Files kodieren konnte, welche nacher beim Muxen die gleichen Streams beinhalteten. Nur das ist eben nicht immer gleich - mal ist noch die Originaltonspur dabei, oder ich füge die Untertitel aus dem Teletext ein. Um das trotzdem innerhalb einer Datei (und somit z.B. über Nacht) umrechnen zu können, hatte ich die Idee, die Filenamen vorher per IF zu vergleichen und dann die Mux-Einstellungen abzurufen:

Code:
chcp 1252


SET ziel=T:\Dokumentationen

REM #### Kodierqualität ####
SET crf=20


REM ### Bildwiederholung ####
SET fps=50p


@echo off

REM #### Video und Ton kodieren ####
for /F "tokens=1 delims=" %%i in ('dir /B *.mkv') do (

REM #### Quellvideo umbennenen für avs-Datei ####
ren "%%~ni.mkv" "Quellvideo.mkv"

REM #### Video kodieren crf #### 
"C:\Program Files (x86)\x264\x264.exe" "avs.avs" --output "%%~ni.h264" --preset slow --tune film --vbv-bufsize 40000 --vbv-maxrate 30000 --profile high --level 4.1 --crf %crf% --sar 1:1

REM #### Quellvideo zurückbenennen ####
ren "Quellvideo.mkv" "%%~ni.mkv"

set Dateiname=%%~ni
 
if %Dateiname% == Doku XYZ
(
REM #### Mergen ####
"C:\Program Files (x86)\MKVtoolnix\mkvmerge.exe" -o "%ziel%\%%~ni.mkv" --language 0:ger --track-name "0:%%~ni" ^
--default-duration "0:%fps%" --compression 0:none = "%%~ni.h264" ^
--language 0:ger --track-name "0:%%~ni Ger mp3" --compression 0:none = "%%~ni_ger.mp3" ^
--language 0:ger --track-name "0:%%~ni Eng mp3" --compression 0:none = "%%~ni_eng.mp3"
"--track-order" "0:0,1:0,2:0" 
)

if %Dateiname% == Doku ABC
(
REM #### Mergen ####
"C:\Program Files (x86)\MKVtoolnix\mkvmerge.exe" -o "%ziel%\%%~ni.mkv" --language 0:ger --track-name "0:%%~ni" ^
--default-duration "0:%fps%" --compression 0:none = "%%~ni.h264" ^
--language 0:ger --track-name "0:%%~ni Ger mp3" --compression 0:none = "%%~ni_ger.mp3"
"--track-order" "0:0,1:0" 
)


)


REM #### System automatisch runterfahren ####
REM shutdown -s -t 60

pause

und wie gesagt, das läuft einfach durch un beendet sich...der Fehler muss aber in der IF-Abfrage liegen, denn ohne diese wird das File kodiert.
 
Zurück
Oben