![]() |
PCDVD數位科技討論區
(https://www.pcdvd.com.tw/index.php)
- 疑難雜症區
(https://www.pcdvd.com.tw/forumdisplay.php?f=34)
- - 求助win10 批次檔迴圈
(https://www.pcdvd.com.tw/showthread.php?t=1215987)
|
---|
求助win10 批次檔迴圈
請問以下指令的迴圈批次檔要怎寫
我要利用mk程式去合併D槽內同資料夾內的MKV檔與同名SRT檔,以往都是複製貼上後 再一個一個修改,如果遇到集數多或是好幾季的影集,這個步驟就蠻浪費時間 想請教我要如何利用 迴圈指令 去依序變更 S01E01、S01E02、S01E03...S02E01、S02E02、S02E03..... 引用:
|
mk.exe 是什麼, 你得先講一下. 不然沒辦法查參數怎麼下.
|
引用:
感謝回覆 因為指令太長,為了能夠表達我想要表述的部分,所以將指令的部分裁切縮短 方便一行表示。 mk.exe 是 MKVToolNix 底下的 mkvmerge.exe 完整封裝一個影片+字幕的指令是這樣的 引用:
|
問ChatGPT給的答案:
Skip to content Open sidebar You said: Write a batch file for Windows. In all subdirectories, for each .mkv and .srt pair, run mk.exe. ChatGPT said: Here’s a Windows batch file that recursively searches through all subdirectories for .mkv and .srt files with matching base names, then runs your program mk.exe for each matching pair. ----------------------------------------------------------- @echo off setlocal enabledelayedexpansion rem === Search recursively for all .mkv files === for /r %%A in (*.mkv) do ( set "mkvfile=%%~A" set "basename=%%~nA" set "folder=%%~dpA" set "srtfile=!folder!!basename!.srt" if exist "!srtfile!" ( echo Found pair: echo MKV: !mkvfile! echo SRT: !srtfile! echo Running mk.exe... mk.exe "!mkvfile!" "!srtfile!" echo. ) ) echo Done. pause 🧩 How it works for /r %%A in (*.mkv) — recursively finds all .mkv files. For each .mkv, it: Extracts the base name (%%~nA). Constructs the .srt file path using the same folder and base name. Checks if that .srt exists. If yes, runs: mk.exe "full\path\to\file.mkv" "full\path\to\file.srt" Outputs progress to the console. 💡 Optional improvements If you want to redirect mk.exe output to a log file: mk.exe "!mkvfile!" "!srtfile!" >> "mk_log.txt" 2>&1 If mk.exe is not in PATH, specify the full path: "C:\path\to\mk.exe" "!mkvfile!" "!srtfile!" Would you like it to skip already processed pairs (e.g., if output exists or logged), or just process everything each time? No file chosenNo file chosen |
引用:
我倒是忘了 還可以利用AI 去幫我寫,感謝~ |
引用:
用AI協助的話,還是要注意語法的細節有沒有給錯,然後再修正. |
引用:
這個套兩層 for 迴圈 ,一層季別一層集數 應該就可以解決了 :ase |
我曾在 PTT 回過幾次類似的。
當然現在有 chatgpt 可以問。但不一定每次都正確。 只是頭腦真的會打結。若要考慮複雜的情況,或目錄有特殊字元等都很麻煩。 現在 powershell core (就是 7.5 後那版)很方便,也可以免安裝。 |
如果是由種子途徑得來的檔案,個人不建議變更原檔案的內容,一則是若繼續作種,檔案體積加倍(原檔+變更檔),二則是若刪除原檔,變更檔與原檔不一致,也無繼續作種可能。
個人作法是建立影音伺服器,不需要整併影音與字幕檔,只要兩者為同一命名,且後者加後綴default,即便原MKV裡設定了以其他語言為預設字幕,外掛字幕優先權大於MKV預設,在影音伺服器便會選擇default檔案。 在BT程式設定與影音伺服器相同路徑,可同時作種。 如果MKV已內建你要的字幕,用MKV相關程式(gMKVExtractGUI)並在其內設定抽取後的檔案名稱(同檔名+default後綴),影音伺服器即可辨識。 若是影集字幕檔與影集名稱只有部分相同(如影集名),可以用WIN內建或批次更改檔名程式來處理。 個人使用的影音伺服器是Jellyfin。 |
其實不用跑迴圈,先用EXCEL批次產生大量指令文字,
再將產生的指令文字複製到BAT檔案內執行就好,這樣單純得多 |
所有的時間均為GMT +8。 現在的時間是06:44 PM. |
vBulletin Version 3.0.1
powered_by_vbulletin 2025。