Probleme mit Start- und Endzeit per Batch in Datei schreiben

mischaef

Kassettenkind
Teammitglied
Registriert
Aug. 2012
Beiträge
6.166
Hallo zusammen,

ich würde gerne in einer Batchdatei start- und Endzeitpunkt samt Dauer in Minuten der Kodierung schreiben. Das mache ich wie folgt:

for /F "tokens=1 delims=" %%i in ('dir /B *.wav') do (

echo startzeit %%~ni - %time% >> log.txt
set /a start_timer=%time:~0,2%*3600+%time:~3,2%*60+%time:~6,2%

"C:\Program Files (x86)\lame3.97\lame.exe" "%%~ni.wav" "%%~ni.mp3" -h -b 192


rem del "%%~ni.wav"

rem del "%%~ni.pk"

rem md "%%~ni"

rem move "%%~ni.mp3" "%%~ni"

echo endzeit= %%~ni - %time% >> log.txt
set /a end_timer=%time:~0,2%*3600+%time:~3,2%*60+%time:~6,2%

set /a diff=end_timer-start_timer
set /a diff=diff/60

echo Dauer: %diff% Minuten >> log.txt
echo. >> log.txt
echo ----------------------------------------- >> log.txt
echo. >> log.txt

Das Problem: Als Endzeit nimmt das Script immer die Startzeit und mit zwei gleichen Zeiten lässt sich ja auch nicht die Differenz ermitteln.

Hat jemand evt. eine Idee was da falsch läuft?

Besten dank

Michael
 
Das Skript läuft asynchron, d.h., es wartet nicht darauf bis die aufgerufene Anwendung beendet ist, um fortzufahren. Es startet den Kodierungsprozess und macht sofort weiter. Deswegen ist Endzeit auch gleichzeitig die Startzeit.

Möchtest du, dass die Shell auf den Prozess wartet, gibt es den netten START /W anwendungsname.exe Befehl ;)
 
OK, wenn ich das ganze jetzt mit

START /WAIT "C:\Program Files (x86)\lame3.97\lame.exe" "%%~ni.wav" "%%~ni.mp3" -h -b 192

starte, dann wird das wav-File per VLC abgespielt, aber nicht lame zum kodieren aufgerufen. Zudem bleiben Start- und Endzeit immer noch identisch.

Ich hab auch mal mit verschiedenen Parametern, die ich hierraus genommen habe

https://de.wikibooks.org/wiki/Batch-Programmierung:_Wichtige_DOS-Kommandos#start

probiert, aber nichts hat geholfen...
 
Probier mal

START /WAIT "Lame" "C:\Program Files (x86)\lame3.97\lame.exe" "%%~ni.wav" "%%~ni.mp3" -h -b 192
 
OK, jetzt funktioniert es in sofern, dass lame in einem neuen Fenster gestartet wird. Wenn ich dazu /b einfüge, damit es im gleichen Fenster bleibt, bricht aber das Chaos aus, es scheint als führe er mehrere Instanzen auf einmal aus. In der Log-Datei wird dabei immer nur die Startzeit des ersten Files eingetragen...also für alle Files bei beiden Punkten die gleiche Zeit...

cmd.jpg
Ergänzung ()

So, kleines Update:

Die Ausgabe der Zeit habe ich jetzt mit "SetLocal EnableDelayedExpansion" und "!time!" hinbekommen. Ich habe aber noch keine Ahnung wie sich das auf den Rest des Scriptes auswirkt.

Zudem klappt die Umrechnung der verwendeten Zeit so auch nicht...
 

Ähnliche Themen

Zurück
Oben