
【未解決】利用頭數據整理文件的批處理遇到的一些問題最后由 TAT 于 -3-6 16:58先簡述一下我的思路:1.由一個或多個給定目錄,使用for結合dir獲得一個要進行處理的可迭代的文件列表2.讀取并分析其頭數據,產生可供程序化操作的屬性條目數組。(這一步直接在上句的for中進行即可)3.根據第二步產生的屬性條目數組進行程序化操作,包括取舍等等。無法判斷操作的先記錄下來,最后特別顯示。我目前影響進度的幾個問題:1.因為覺得有必要,所以(沒有直接用dir /s而是用for分步進行)第一步代碼暫大致如下:
- for /f tokens=* %%i in ('dir /ad /b /s C:音樂 D:音樂D E:音樂') do (
- for /f tokens=* %%x in ('dir /a-d /b %%i') do ()
nclick="copycode($('code0'));">復制代碼
其中第二次dir由于部分文件夾不存在文件只有文件夾而導致打印出“找不到文件”這樣的信息,現已有方法使其不打印,方法如下:
- dir /a-d /b %%i 2>nul
nclick="copycode($('code1'));">復制代碼
由于語句是for的in部分,因此上邊用單引號括起來了,不過上述方法在in中會出錯,求解。
- for /f tokens=* %%x in ('dir /a-d /b %%i 2>nul') do ()
nclick="copycode($('code2'));">復制代碼
2.此前個人已查閱大量資料,對于windows的文件系統規則已有簡單了解。對于讀取文件頭信息這點有一些想法,還望諸君不吝賜教。a.在bat中自己寫規則,用16進制逐字節讀取文件,并對比相關文件格式規則進一步細化翻譯出頭信息。很顯然,這是重復造輪子的事情。。費力且不討好。。用C實現倒是可行性大一點,batch、Python這些在這似乎就很不合適。。b.技術有限,時間有限,輪子搞不了,退而求其次。于是ffmpeg就被我盯上了,不過相關幫助代碼實在對小白不太友好。。也不知道是不是我太小白了??
- ::命令行: ffprobe [選項] [‘輸入文件’]
- ffprobe -hide_banner E:桌面工作文件夾處處吻 - 楊千嬅.flac
- pause
nclick="copycode($('code3'));">復制代碼
運行結果如圖,.flac頭信息都有列出。ffprobe - 01.pngnload="thumbImg(this)" alt="" />ffprobe - 02.pngnload="thumbImg(this)" alt="" />
ffprobe打印出的信息不知道如何存入變量,或者就算存入文件也行。。tips:直接用>>會命令報錯。。用|也報錯。。求教!!c.ffprobe體積都近百M,在這里無用的代碼實在太多了。。特向在座諸君討教,是否有其他更簡單便捷好用的方式方法或者其他什么。3.圖片文件中有些圖片之間存在特殊關系:它們擁有重復的部分區域,但不固定,暫且將之稱為”孿生“。“孿生”文件示例如下:nload="thumbImg(this)" alt="" />nload="thumbImg(this)" alt="" />nload="thumbImg(this)" alt="" />nload="thumbImg(this)" alt="" />nload="thumbImg(this)" alt="" />nload="thumbImg(this)" alt="" />現求一良策,能夠簡便地對大量圖片進行”孿生“關系情況判斷。Tips:要么兩個文件互為”孿生“關系,要么不存在另一文件與其組成”孿生“關系。兩個文件必然分別為1920*1080和1080*1920兩種規格之一。請盡量使用batch或Python或C實現,因為其他的我可能看不懂。。