
批處理如何批量刪除文件夾里時長小于指定秒數的視頻bat和多個文件夾在同一個目錄下,每個文件夾有若干視頻,需要批量刪除文件夾里時長小于指定秒數的視頻,比如7秒。最好能在運行的時候自己輸入秒數。用deepseek試寫了一個并不能運行,大佬幫忙優化一下,看是哪里的問題,也已經把ffmpeg軟件和bat放一起了,再次感謝了代碼如下:
nclick="copycode($('code0'));">復制代碼
- @echo off
- setlocal enabledelayedexpansion
- :: 設置視頻時長閾值(秒)
- set threshold=7
- :: 獲取當前文件夾路徑
- set current_dir=%cd%
- :: 遍歷當前目錄及所有子目錄下的MP4文件
- for /R %current_dir% %%f in (*.mp4) do (
- :: 使用FFmpeg獲取視頻時長
- for /f tokens=1 delims=. %%d in ('ffmpeg -i %%f 2>&1 ^| findstr Duration') do (
- set duration=%%d
- set duration=!duration: =!
- :: 提取時長的小時、分鐘和秒部分
- for /f tokens=1-3 delims=: %%h in (!duration!) do (
- set hours=%%h
- set minutes=%%i
- set seconds=%%j
- )
- :: 計算總時長(秒)
- set /a total_seconds = hours * 3600 + minutes * 60 + seconds
- :: 如果時長小于閾值,則刪除文件
- if !total_seconds! lss %threshold% (
- echo Deleting %%f (Duration: !total_seconds! seconds)
- del %%f
- )
- )
- )
- endlocal
- pause

