這使用mediainfo
來提取視頻屬性,然後檢查軌道長度並將視頻相應地排序爲長或短目錄。按長度排序視頻,需要效率,如果可能的話可靠性
mediainfo.exe %1 >%temp%\vdata
type %temp%\vdata | find ": 9 h" >nul && move %1 long && goto next
type %temp%\vdata | find ": 8 h" >nul && move %1 long && goto next
type %temp%\vdata | find ": 7 h" >nul && move %1 long && goto next
type %temp%\vdata | find ": 6 h" >nul && move %1 long && goto next
type %temp%\vdata | find ": 5 h" >nul && move %1 long && goto next
type %temp%\vdata | find ": 4 h" >nul && move %1 long && goto next
type %temp%\vdata | find ": 3 h" >nul && move %1 long && goto next
type %temp%\vdata | find ": 2 h" >nul && move %1 long && goto next
type %temp%\vdata | find ": 1 h" >nul && move %1 long && goto next
type %temp%\vdata | find ": 59 min" >nul && move %1 long && goto next
type %temp%\vdata | find ": 58 min" >nul && move %1 long && goto next
type %temp%\vdata | find ": 57 min" >nul && move %1 long && goto next
type %temp%\vdata | find ": 56 min" >nul && move %1 long && goto next
type %temp%\vdata | find ": 55 min" >nul && move %1 long && goto next
type %temp%\vdata | find ": 54 min" >nul && move %1 long && goto next
type %temp%\vdata | find ": 53 min" >nul && move %1 long && goto next
type %temp%\vdata | find ": 52 min" >nul && move %1 long && goto next
type %temp%\vdata | find ": 51 min" >nul && move %1 long && goto next
type %temp%\vdata | find ": 50 min" >nul && move %1 long && goto next
type %temp%\vdata | find ": 49 min" >nul && move %1 long && goto next
type %temp%\vdata | find ": 48 min" >nul && move %1 long && goto next
type %temp%\vdata | find ": 47 min" >nul && move %1 long && goto next
type %temp%\vdata | find ": 46 min" >nul && move %1 long && goto next
type %temp%\vdata | find ": 45 min" >nul && move %1 long && goto next
type %temp%\vdata | find ": 44 min" >nul && move %1 long && goto next
type %temp%\vdata | find ": 43 min" >nul && move %1 long && goto next
type %temp%\vdata | find ": 42 min" >nul && move %1 long && goto next
type %temp%\vdata | find ": 41 min" >nul && move %1 long && goto next
type %temp%\vdata | find ": 40 min" >nul && move %1 long && goto next
type %temp%\vdata | find ": 39 min" >nul && move %1 long && goto next
type %temp%\vdata | find ": 38 min" >nul && move %1 long && goto next
type %temp%\vdata | find ": 37 min" >nul && move %1 long && goto next
type %temp%\vdata | find ": 36 min" >nul && move %1 long && goto next
type %temp%\vdata | find ": 35 min" >nul && move %1 long && goto next
type %temp%\vdata | find ": 34 min" >nul && move %1 long && goto next
type %temp%\vdata | find ": 33 min" >nul && move %1 long && goto next
type %temp%\vdata | find ": 32 min" >nul && move %1 long && goto next
type %temp%\vdata | find ": 31 min" >nul && move %1 long && goto next
type %temp%\vdata | find ": 30 min" >nul && move %1 long && goto next
type %temp%\vdata | find ": 29 min" >nul && move %1 long && goto next
type %temp%\vdata | find ": 28 min" >nul && move %1 long && goto next
type %temp%\vdata | find ": 27 min" >nul && move %1 long && goto next
type %temp%\vdata | find ": 26 min" >nul && move %1 long && goto next
:: sort long making of videos, leave short ones for manual checkup
echo "%~n1" | find /i "making of " >nul && goto next
type %temp%\vdata | find ": 25 min" >nul && move %1 short && goto next
type %temp%\vdata | find ": 24 min" >nul && move %1 short && goto next
type %temp%\vdata | find ": 23 min" >nul && move %1 short && goto next
type %temp%\vdata | find ": 22 min" >nul && move %1 short && goto next
type %temp%\vdata | find ": 21 min" >nul && move %1 short && goto next
type %temp%\vdata | find ": 20 min" >nul && move %1 short && goto next
type %temp%\vdata | find ": 19 min" >nul && move %1 short && goto next
type %temp%\vdata | find ": 18 min" >nul && move %1 short && goto next
type %temp%\vdata | find ": 17 min" >nul && move %1 short && goto next
type %temp%\vdata | find ": 16 min" >nul && move %1 short && goto next
type %temp%\vdata | find ": 15 min" >nul && move %1 short && goto next
type %temp%\vdata | find ": 14 min" >nul && move %1 short && goto next
type %temp%\vdata | find ": 13 min" >nul && move %1 short && goto next
type %temp%\vdata | find ": 12 min" >nul && move %1 short && goto next
type %temp%\vdata | find ": 11 min" >nul && move %1 short && goto next
type %temp%\vdata | find ": 10 min" >nul && move %1 short && goto next
type %temp%\vdata | find ": 9 min" >nul && move %1 short && goto next
type %temp%\vdata | find ": 8 min" >nul && move %1 short && goto next
type %temp%\vdata | find ": 7 min" >nul && move %1 short && goto next
type %temp%\vdata | find ": 6 min" >nul && move %1 short && goto next
type %temp%\vdata | find ": 5 min" >nul && move %1 short && goto next
type %temp%\vdata | find ": 4 min" >nul && move %1 short && goto next
type %temp%\vdata | find ": 3 min" >nul && move %1 short && goto next
type %temp%\vdata | find ": 2 min" >nul && move %1 short && goto next
type %temp%\vdata | find ": 1 min" >nul && move %1 short && goto next
type %temp%\vdata | find ": 59 s " >nul && move %1 short && goto next
type %temp%\vdata | find ": 58 s " >nul && move %1 short && goto next
type %temp%\vdata | find ": 57 s " >nul && move %1 short && goto next
type %temp%\vdata | find ": 56 s " >nul && move %1 short && goto next
type %temp%\vdata | find ": 55 s " >nul && move %1 short && goto next
type %temp%\vdata | find ": 54 s " >nul && move %1 short && goto next
type %temp%\vdata | find ": 53 s " >nul && move %1 short && goto next
type %temp%\vdata | find ": 52 s " >nul && move %1 short && goto next
type %temp%\vdata | find ": 51 s " >nul && move %1 short && goto next
type %temp%\vdata | find ": 50 s " >nul && move %1 short && goto next
type %temp%\vdata | find ": 49 s " >nul && move %1 short && goto next
type %temp%\vdata | find ": 48 s " >nul && move %1 short && goto next
type %temp%\vdata | find ": 47 s " >nul && move %1 short && goto next
type %temp%\vdata | find ": 46 s " >nul && move %1 short && goto next
type %temp%\vdata | find ": 45 s " >nul && move %1 short && goto next
type %temp%\vdata | find ": 44 s " >nul && move %1 short && goto next
type %temp%\vdata | find ": 43 s " >nul && move %1 short && goto next
type %temp%\vdata | find ": 42 s " >nul && move %1 short && goto next
type %temp%\vdata | find ": 41 s " >nul && move %1 short && goto next
type %temp%\vdata | find ": 40 s " >nul && move %1 short && goto next
type %temp%\vdata | find ": 39 s " >nul && move %1 short && goto next
type %temp%\vdata | find ": 38 s " >nul && move %1 short && goto next
type %temp%\vdata | find ": 37 s " >nul && move %1 short && goto next
type %temp%\vdata | find ": 36 s " >nul && move %1 short && goto next
type %temp%\vdata | find ": 35 s " >nul && move %1 short && goto next
type %temp%\vdata | find ": 34 s " >nul && move %1 short && goto next
type %temp%\vdata | find ": 33 s " >nul && move %1 short && goto next
type %temp%\vdata | find ": 32 s " >nul && move %1 short && goto next
type %temp%\vdata | find ": 31 s " >nul && move %1 short && goto next
type %temp%\vdata | find ": 30 s " >nul && move %1 short && goto next
type %temp%\vdata | find ": 29 s " >nul && move %1 short && goto next
type %temp%\vdata | find ": 28 s " >nul && move %1 short && goto next
type %temp%\vdata | find ": 27 s " >nul && move %1 short && goto next
type %temp%\vdata | find ": 26 s " >nul && move %1 short && goto next
type %temp%\vdata | find ": 25 s " >nul && move %1 short && goto next
type %temp%\vdata | find ": 24 s " >nul && move %1 short && goto next
type %temp%\vdata | find ": 23 s " >nul && move %1 short && goto next
type %temp%\vdata | find ": 22 s " >nul && move %1 short && goto next
type %temp%\vdata | find ": 21 s " >nul && move %1 short && goto next
type %temp%\vdata | find ": 20 s " >nul && move %1 short && goto next
type %temp%\vdata | find ": 19 s " >nul && move %1 short && goto next
type %temp%\vdata | find ": 18 s " >nul && move %1 short && goto next
type %temp%\vdata | find ": 17 s " >nul && move %1 short && goto next
type %temp%\vdata | find ": 16 s " >nul && move %1 short && goto next
type %temp%\vdata | find ": 15 s " >nul && move %1 short && goto next
type %temp%\vdata | find ": 14 s " >nul && move %1 short && goto next
type %temp%\vdata | find ": 13 s " >nul && move %1 short && goto next
type %temp%\vdata | find ": 12 s " >nul && move %1 short && goto next
type %temp%\vdata | find ": 11 s " >nul && move %1 short && goto next
type %temp%\vdata | find ": 10 s " >nul && move %1 short && goto next
type %temp%\vdata | find ": 9 s " >nul && move %1 short && goto next
type %temp%\vdata | find ": 8 s " >nul && move %1 short && goto next
type %temp%\vdata | find ": 7 s " >nul && move %1 short && goto next
type %temp%\vdata | find ": 6 s " >nul && move %1 short && goto next
type %temp%\vdata | find ": 5 s " >nul && move %1 short && goto next
type %temp%\vdata | find ": 4 s " >nul && move %1 short && goto next
type %temp%\vdata | find ": 3 s " >nul && move %1 short && goto next
type %temp%\vdata | find ": 2 s " >nul && move %1 short && goto next
type %temp%\vdata | find ": 1 s " >nul && move %1 short && goto next
:next
正如您所看到的那樣效率很低。這可以減少到幾行?也作爲一個側面提示,這個軌道長度檢查不是很可靠,因爲有時視頻集成了錯誤的軌道(通常是字幕),這意味着不正確的長度的額外軌道將決定視頻應該去哪裏。
這是mediainfo如何將數據輸出到vdata
文件的方式。視頻軌道的持續時間應始終在同線7
General
Unique ID : 46047801939398570510895581797401581513 (0x22A47BEB8AA8348EF96251DF04E557C9)
Complete name : Tomorrowland 2017 GoPro.mp4
Format : Matroska
Format version : Version 4/Version 2
File size : 3.86 GiB
Duration : 1 h 0 min
Overall bit rate : 9 074 kb/s
Writing application : Lavf57.41.100
Writing library : Lavf57.41.100/Lavf57.41.100
Video
ID : 1
Format : HEVC
Format/Info : High Efficiency Video Coding
Format profile : [email protected]@Main
Codec ID : V_MPEGH/ISO/HEVC
Duration : 1 h 0 min
Width : 1 920 pixels
Height : 1 080 pixels
Display aspect ratio : 16:9
Frame rate mode : Constant
Frame rate : 25.000 FPS
Color space : YUV
Chroma subsampling : 4:2:0
Bit depth : 8 bits
Writing library : x265 1.9:[Windows][GCC 5.2.0][64 bit] 8bit
Encoding settings : wpp/ctu=64/min-cu-size=8/max-tu-size=32/tu-intra-depth=1/tu-inter-depth=1/me=1/subme=1/merange=57/no-rect/no-amp/max-merge=2/temporal-mvp/early-skip/rdpenalty=0/no-tskip/no-tskip-fast/strong-intra-smoothing/no-lossless/no-cu-lossless/no-constrained-intra/fast-intra/open-gop/no-temporal-layers/interlace=0/keyint=250/min-keyint=25/scenecut=40/rc-lookahead=15/lookahead-slices=6/bframes=4/bframe-bias=0/b-adapt=0/ref=2/limit-refs=3/no-limit-modes/weightp/no-weightb/aq-mode=1/qg-size=32/aq-strength=1.00/cbqpoffs=0/crqpoffs=0/rd=2/psy-rd=2.00/rdoq-level=0/psy-rdoq=0.00/signhide/deblock/sao/no-sao-non-deblock/b-pyramid/cutree/no-intra-refresh/rc=crf/crf=21.0/qcomp=0.60/qpmin=0/qpmax=51/qpstep=4/ipratio=1.40/pbratio=1.30
Language : English
Default : Yes
Forced : No
DURATION : 01:00:58.103000000
Audio
ID : 2
Format : AAC
Format/Info : Advanced Audio Codec
Format profile : LC
Codec ID : A_AAC
Duration : 1 h 0 min
Channel(s) : 2 channels
Channel positions : Front: L R
Sampling rate : 44.1 kHz
Frame rate : 43.066 FPS (1024 spf)
Compression mode : Lossy
Delay relative to video : -743 ms
Writing library : Lavc57.48.101 aac
Default : Yes
Forced : No
DURATION : 01:00:58.028000000
史詩簡單!將遷移到ffprobe版本......謝謝! – bricktop
最近我從ffprobe獲得'Access is denied.'錯誤。世界上可能會造成什麼? – bricktop
@bricktop你可能應該嘗試一下簡單的重新啓動。如果這不能解決它,請運行chkdsk。我的猜測是它是一個導致共享衝突的掛起進程,或者可能是文件系統損壞。 – rojo