![]() |
||
Junior Member
![]() ![]() ![]() 加入日期: Mar 2002 您的住址: 人不犯我,我不犯人
文章: 789
|
求助win10 批次檔迴圈
請問以下指令的迴圈批次檔要怎寫
我要利用mk程式去合併D槽內同資料夾內的MKV檔與同名SRT檔,以往都是複製貼上後 再一個一個修改,如果遇到集數多或是好幾季的影集,這個步驟就蠻浪費時間 想請教我要如何利用 迴圈指令 去依序變更 S01E01、S01E02、S01E03...S02E01、S02E02、S02E03..... 引用:
|
||||||||
![]() |
![]() |
Advance Member
![]() ![]() 加入日期: Aug 2004
文章: 334
|
mk.exe 是什麼, 你得先講一下. 不然沒辦法查參數怎麼下.
|
||
![]() |
![]() |
Junior Member
![]() ![]() ![]() 加入日期: Mar 2002 您的住址: 人不犯我,我不犯人
文章: 789
|
引用:
感謝回覆 因為指令太長,為了能夠表達我想要表述的部分,所以將指令的部分裁切縮短 方便一行表示。 mk.exe 是 MKVToolNix 底下的 mkvmerge.exe 完整封裝一個影片+字幕的指令是這樣的 引用:
此文章於 2025-10-06 05:43 PM 被 workduck 編輯. |
||
![]() |
![]() |
Advance Member
![]() ![]() 加入日期: Aug 2004
文章: 334
|
問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 |
![]() |
![]() |
Junior Member
![]() ![]() ![]() 加入日期: Mar 2002 您的住址: 人不犯我,我不犯人
文章: 789
|
引用:
我倒是忘了 還可以利用AI 去幫我寫,感謝~ |
|
![]() |
![]() |
Advance Member
![]() ![]() 加入日期: Dec 2005 您的住址: 台灣台北
文章: 428
|
引用:
用AI協助的話,還是要注意語法的細節有沒有給錯,然後再修正.
__________________
小薪的GMail: ![]() 小薪的LINE: ![]() 小薪是公的不是母的 |
|
![]() |
![]() |
Master Member
![]() ![]() ![]() ![]() 加入日期: Oct 2001
文章: 2,271
|
引用:
這個套兩層 for 迴圈 ,一層季別一層集數 應該就可以解決了 ![]()
__________________
超準的星座分析! |
|
![]() |
![]() |
Senior Member
![]() ![]() ![]() 加入日期: Sep 2001 您的住址: 淡水
文章: 1,284
|
我曾在 PTT 回過幾次類似的。
當然現在有 chatgpt 可以問。但不一定每次都正確。 只是頭腦真的會打結。若要考慮複雜的情況,或目錄有特殊字元等都很麻煩。 現在 powershell core (就是 7.5 後那版)很方便,也可以免安裝。 |
![]() |
![]() |
Senior Member
![]() ![]() ![]() 加入日期: May 2002 您的住址: 陣亡者的靈堂
文章: 1,070
|
如果是由種子途徑得來的檔案,個人不建議變更原檔案的內容,一則是若繼續作種,檔案體積加倍(原檔+變更檔),二則是若刪除原檔,變更檔與原檔不一致,也無繼續作種可能。
個人作法是建立影音伺服器,不需要整併影音與字幕檔,只要兩者為同一命名,且後者加後綴default,即便原MKV裡設定了以其他語言為預設字幕,外掛字幕優先權大於MKV預設,在影音伺服器便會選擇default檔案。 在BT程式設定與影音伺服器相同路徑,可同時作種。 如果MKV已內建你要的字幕,用MKV相關程式(gMKVExtractGUI)並在其內設定抽取後的檔案名稱(同檔名+default後綴),影音伺服器即可辨識。 若是影集字幕檔與影集名稱只有部分相同(如影集名),可以用WIN內建或批次更改檔名程式來處理。 個人使用的影音伺服器是Jellyfin。 |
![]() |
![]() |
Master Member
![]() ![]() ![]() ![]() 加入日期: Sep 2001 您的住址: K
文章: 1,504
|
其實不用跑迴圈,先用EXCEL批次產生大量指令文字,
再將產生的指令文字複製到BAT檔案內執行就好,這樣單純得多 |
![]() |
![]() |