windows - batch fil for at slette alle .wavs over 3 sekunder i længden

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg opretter en .bat for at slette alle .wav'er i en katalog over 3 sekunder i længden. Jeg fandt dette spørgsmål, der kan bruges til at slette alle .mp3 's/.wav' s under 3 sekunder ved hjælp af MediaInfo, hvordan ville du ændre det for at slette filer mere end 3 sekunder vs mindre end 3 sekunder? Du skal fjerne 'ekko' for at kunne udføre


  @echo off
set "exe=MediaInfo.exe"
for /r \%\%a in (*.wav) do (
"\%exe\%" -f "\%\%a" | find "Duration" | findstr /r "00:00:0[210]" >nul && echo del "\%\%a"
)
pause


Kør medieinfo med en enkelt fil Udgang:


Duration                                 : 203
Duration                                 : 203ms
Duration                                 : 203ms
Duration                                 : 203ms
Duration                                 : 00:00:00.203
Duration                                 : 00:00:00.203
Duration                                 : 203
Duration                                 : 203ms
Duration                                 : 203ms
Duration                                 : 203ms
Duration                                 : 00:00:00.203
Duration                                 : 00:00:00.203
Press any key to continue . . .


Disse er filer under 00: 00: 0 [[210]], men jeg vil gerne målrette dem over 00: 00: 0 [[210]]

Bedste reference


Denne kode tager ikke højde for millisekunderne og antager den sidste varighed, tidens udgang vil være i dette format 00: 00: 00.123


@echo off

for /r \%\%F in (*.wav) do (
    FOR /F "tokens=2,3,4 delims=:. " \%\%G IN ('mediainfo.exe -f "\%\%F" ^| find "Duration"') DO (
        set "ftime=\%\%G\%\%H\%\%I"
    )
    setlocal enabledelayedexpansion
    IF "!ftime!" GTR "000003" DEL "\%\%F"
    endlocal
)
pause