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