tfoal01
Goto Top

Millisekunden in Timecodes (Zeit) umrechnen

Hallo zusammen,

ich habe eine Textdatei mit folgendem Inhalt:

0=45387*Tasse*

Von dieser Art Zeilen befinden sich mehrere in diesem Textdokument. Es handelt sich hierbei um bookmark Positionen in einem Audioplayer.
Die Zahl vor dem = ist die Nummer des bookmarks. Die Zahl nach dem = ist die Position in Millisekunden und das Wort zwischen den Sternchen ist die Beschreibung des bookmarks.
Nun zu meiner Frage:

Kann man in diesem Fall Batch Script oder ähnlichem die Millisekunden in Zeit umrechnen, also hh:mm:ss und die Millisekunden im Dokument mit diesem Wert einfach überschreiben/ersetzen?

Wichtig ist hier auch, dass der weitere Inhalt des Dokumentes weiterhin bestehen bleibt.

Vielen Dank

Content-ID: 670085

Url: https://administrator.de/forum/millisekunden-in-timecodes-zeit-umrechnen-670085.html

Ausgedruckt am: 15.01.2025 um 13:01 Uhr

michi1983
michi1983 09.12.2024 aktualisiert um 23:05:34 Uhr
Goto Top
Hallo,

@echo off
setlocal enabledelayedexpansion

:: Pfad zur Eingabedatei
set inputFile=bookmarks.txt
set outputFile=output.txt

:: Temporäre Datei für Ergebnisse
if exist "%outputFile%" del "%outputFile%"  

:: Datei Zeile für Zeile einlesen
for /f "tokens=* delims=" %%A in (%inputFile%) do (  
    set "line=%%A"  

    :: Extrahieren der Bookmark-Nummer, Millisekunden und Beschreibung
    for /f "tokens=1,2,3 delims==*" %%B in ("!line!") do (  
        set "bookmarkNumber=%%B"  
        set "millis=%%C"  
        set "description=%%D"  

        :: Umrechnung der Millisekunden in hh:mm:ss
        set /a hours=!millis! / 3600000
        set /a remainder=!millis! %% 3600000
        set /a minutes=!remainder! / 60000
        set /a remainder=!remainder! %% 60000
        set /a seconds=!remainder! / 1000

        :: Führende Nullen hinzufügen
        set "hours=0!hours!"  
        set "minutes=0!minutes!"  
        set "seconds=0!seconds!"  

        set "hours=!hours:~-2!"  
        set "minutes=!minutes:~-2!"  
        set "seconds=!seconds:~-2!"  

        :: Formatierte Zeit erzeugen
        set "formattedTime=!hours!:!minutes!:!seconds!"  

        :: Zeile mit umgewandeltem Wert schreiben
        echo !bookmarkNumber!=!formattedTime!*!description!* >> "%outputFile%"  
    )
)

:: Originaldatei überschreiben (optional)
move /y "%outputFile%" "%inputFile%"  

echo Fertig! Die Datei wurde aktualisiert.
pause

Gruß
151081
151081 10.12.2024 aktualisiert um 07:39:25 Uhr
Goto Top
Mit Powershell ein Quasi Einzeiler wenn man mal von der Variablen für den TO absieht
Online demo
$file = "d:\test.txt"  
[regex]::replace((Get-Content $file -raw),'(?ism)(?<=^\d+=)\d+',{param($m) [timespan]::fromMilliseconds($m.Value).toString('hh\:mm\:ss')}) | set-content $file