快訊
2026-10-15
電腦疑難雜症

CHKDSK 參數怎麼選?/scan、/f、/r 差在哪,什麼情況反而別亂跑

約 16 分鐘閱讀 · 70 次瀏覽
廣告

⚡ 站長快讀:核心重點

  • 文章屬性:疑難排除
  • 適用系統:Windows 10 / Windows 11(以 NTFS 磁碟區為主)
  • 難易度 / 耗時:中等 / 線上掃描不需停機,離線修復依媒體與資料量而定
  • 核心結論:/scan 線上掃描、/spotfix 定點快修、/f 與 /r 都要鎖定磁碟;/r 是在 /f 之上多做整碟磁區檢查,不是修得比較乾淨。
  • 適用對象:被教學叫去無腦跑 chkdsk /f /r 的人

📌 快速答案

一句話答案:CHKDSK 參數怎麼選,取決於目的:日常健檢用 /scan 做線上掃描,確認有問題再用 /spotfix 短暫離線定點修,只有懷疑實體磁區有問題才需要動用整碟掃描的 /r。


🧰 開始前的準備

  • 適用系統:Windows 10 / Windows 11(本文參數以微軟官方 chkdsk 指令文件為準)
  • 權限需求:系統管理員(以「系統管理員身分」開啟命令提示字元或 Windows 終端機)
  • 需要工具:內建 chkdsk、chkntfs、fsutil;PowerShell 的 Repair-Volume 與 Get-WinEvent
  • 預計耗時:/scan 不需停機、可邊用邊掃;/spotfix 只處理清單內項目,停機時間短;/r 需讀過整碟,官方說明在大容量傳統硬碟上跑上數小時並不罕見

⚠️ 執行前警語:本文的 /f、/r、/spotfix 都會實際改寫檔案系統結構。動手前請先確認重要資料已有另一份備份,並確認電源穩定(筆電請接電源、桌機建議接不斷電系統)。關於中途中斷,微軟官方的說法是:不建議中斷 chkdsk,但取消或中斷 chkdsk 不應該讓磁碟區比執行前更為損毀;再次執行 chkdsk 會進行檢查,並且應該可以修復磁碟區上剩餘的損毀。 也就是說,萬一真的斷電,正確反應是重新開機後再跑一次,而不是恐慌。


🔍 症狀描述與錯誤訊息

會找到這篇的人,通常卡在下面幾種情境之一。

第一種,是檔案總管開一開突然卡住、複製檔案跳出「無法讀取來源檔案或磁碟」,或是某個資料夾點進去顯示檔案大小異常。第二種,是 Windows 開機時自己跳出藍底白字的掃描畫面,跑完一輪之後又照常進系統,讓人搞不清楚到底修了什麼。第三種最常見:上網搜尋「磁碟修復」,搜到的答案清一色是「開系統管理員命令提示字元,打 chkdsk /f /r」,照做之後不是卡在某個百分比好幾個小時,就是跳出這行訊息:

Chkdsk cannot run because the volume is in use by another process. Would you like to schedule this volume to be checked the next time the system restarts? (Y/N)

也有人是直接跑 chkdsk 不加參數,結果看到一堆錯誤回報,以為硬碟快掛了,嚇得馬上要換碟。

這三種情境要的處置完全不一樣,而問題就出在:大多數教學只告訴你打哪一行,沒告訴你這些參數各自在做什麼、需要什麼前提。


🔎 問題根因

先講結論:chkdsk /f /r 之所以在 2026 年還被當成萬用答案,是因為這個口訣來自舊的 NTFS 健康模型,而微軟在 Windows 8 / Windows Server 2012 就改掉了這套模型。

微軟官方在說明這次改版時寫得很清楚:在過去的版本裡,NTFS 採用比較簡單的健康模型,磁碟區不是健康就是不健康;在那個模型下,磁碟區會被離線「必要多久就多久」以修好檔案系統損毀,而停機時間與磁碟區內的檔案數成正比。所以當年的標準建議就是排在重開機時跑,跑多久算多久。

廣告

微軟官方文件對這幾個參數的定義其實寫得很清楚,把它們攤開來看就會發現,它們根本不在同一個層級:

  • /f:修正磁碟上的錯誤。磁碟必須被鎖定;如果 chkdsk 無法鎖定磁碟,會詢問是否於下次重新啟動時檢查。
  • /r:尋找損壞磁區並救回可讀取的資訊。磁碟同樣必須被鎖定。官方明確寫著:/r 包含 /f 的功能,額外再加上實體磁碟錯誤的分析。
  • /scan:僅限 NTFS,對磁碟區執行線上掃描。
  • /spotfix:僅限 NTFS,對磁碟區執行 spot fixing(定點修復)。
  • /x:必要時強制卸載磁碟區,磁碟上所有已開啟的控制代碼都會失效;/x 同樣包含 /f 的功能。
  • /b:僅限 NTFS,清除磁碟區的損壞叢集清單並重新掃描所有已配置與未配置叢集;/b 包含 /r 的功能,官方註明用於把磁碟區映像到新硬碟之後。

看懂這張清單,第一個常見誤解就破了:/f /r 一起打並沒有比較保險。/r 本來就含 /f,兩個一起下不會多修什麼,只是把最花時間的那個一定會執行。

第二個誤解更要命。官方在備註裡明講:如果在使用中的分割區上執行 chkdsk 而未指定 /f,可能會回報假性錯誤(spurious errors),因為它無法鎖定磁碟。也就是說,很多人「先跑一次不加參數看看有沒有問題」看到的那堆錯誤,可能根本不是真的錯誤,而是掃描時磁碟還在被寫入所造成的假象。拿這個結果去判斷硬碟壽命,方向從第一步就歪了。

chkdsk 四個常用參數 scan spotfix f r 的動作、是否需鎖定磁碟與適用時機對照表

🔬 底層機制:這個錯誤訊號從哪裡來?

要理解為什麼現在該優先用 /scan,得先看 NTFS 目前的健康檢查是怎麼運作的。

微軟在 PowerShell 的 Repair-Volume 官方文件裡,把三種修復動作與 chkdsk 參數的對應關係寫得比 chkdsk 那頁更白話:

  • Scan:掃描磁碟區但不嘗試修復,所有偵測到的損毀都會加進 $corrupt 系統檔案(等同 chkdsk /scan)。
  • SpotFix:讓磁碟區短暫離線,然後只修復記錄在 $corrupt 檔案裡的問題(等同 chkdsk /spotfix)。
  • OfflineScanAndFix:讓磁碟區離線,掃描並修復所有找到的錯誤(等同 chkdsk /f)。

這三句話就是整個現代模型的骨架。系統在正常運作時,可以一邊跑一邊掃(線上掃描),把發現的每一筆不一致記在 $corrupt 這個清單裡;真正需要停機處理的,只剩清單上那幾筆。所以 /spotfix 才有辦法「短暫離線」就收工——它不用重掃整顆磁碟,它只處理清單。

廣告

反過來看 /f 與 /r,它們走的是舊路線:先鎖定整個磁碟區,再從頭掃一遍。差別只在 /r 額外把每個磁區都實際讀過一次。這也解釋了為什麼 /r 在傳統硬碟上動輒跑好幾小時(官方原話是:大容量磁碟出現數小時等級的執行時間並不罕見)——它的成本取決於要讀過多少磁區,跟「你的檔案系統壞得多嚴重」幾乎沒關係。

官方文件另外提供了兩個把控制權交回使用者的開關,搭配 /scan 使用:

  • /forceofflinefix:必須與 /scan 併用,略過所有線上修復,把找到的缺陷全部排入離線修復佇列。
  • /perf:必須與 /scan 併用,動用更多系統資源盡快完成掃描;官方同時提醒,這可能對系統上其他工作造成負面效能影響。

至於「開機時自己跳出來掃描」是誰決定的,答案在 chkntfs:預設情況下,電腦啟動時會檢查所有磁碟區,並對被標記為 dirty 的磁碟區執行 chkdsk。而 dirty 這個旗標,官方明載可以用 fsutil dirty set 手動設定,也可能在系統偵測到損毀後被設定。

為什麼固態硬碟要另外談

微軟官方 chkdsk 文件裡有一段常被忽略的內容,直接說明了 chkdsk 在不同儲存媒體上的行為差異。

在傳統硬碟上,磁頭必須實際移動到每個被檢查的位置,/r 要逐一驗證每個磁區的實體完整性,官方直說大容量磁碟跑上好幾小時並不罕見。

在固態硬碟上,官方的說法是:沒有尋道時間,讀取任何磁區都一樣快,/r 仍然需要讀過每一個磁區,但 NAND 快閃記憶體的讀取速度遠快於傳統硬碟;而且關鍵在這句——在固態硬碟上把叢集標記為損壞是邏輯層的動作,不是實體重新對應。

廣告

這句話很值得停下來想一下。chkdsk /r 在固態硬碟上做的事,依官方這句定義,是在檔案系統層把某些叢集標記成不要用,而不是修好任何實體單元。所以「固態硬碟跑 /r 就能修好壞軌」這個期待,在原理上就不成立。(一般而言,固態硬碟的實體壞塊由控制器自行管理、作業系統看到的是邏輯位址,不過這一句屬背景說明,不在上述官方原文範圍內。)

官方另外提醒:chkdsk 在大容量磁碟上完成得異常快,不一定是好消息,而且兩種媒體的可能成因不同。傳統硬碟那一份清單列的是:磁碟區以 dirty 狀態掛載或被作業系統、其他程序鎖定;掃描並未實際掃過磁碟上每個磁區;磁碟可能有讀取磁頭故障或其他硬體問題;以及只做了檔案系統結構的線上掃描,並未在進入作業系統前明確執行離線掃描。固態硬碟那一份清單則列出:掃描並未實際掃過每個磁區、磁碟上要處理的資料本來就不多(可用空間較大)、掃描對象是碎片不嚴重的 NVMe,以及固態硬碟內部可能自行有效率地最佳化了整碟掃描。跑得太快不等於很健康,但也不必然代表有問題——要去看記錄才算數。


🛠️ 解決方案

⚠️ 高風險操作提醒:以下方法二與方法三會實際改寫檔案系統。執行前務必確認重要資料另有備份;若磁碟已出現異音、SMART 已報警、或系統反覆讀取失敗,請先跳到本節最後的「停止條件」。

方法一:先用 /scan 線上掃描(不需鎖定磁碟、不停機)

這是現在應該當成第一步的動作。它不需要鎖定磁碟區,不會中斷你手上的工作,也不會把你趕去重開機,所以是風險最低的起手式。

以系統管理員身分開啟命令提示字元,執行:

chkdsk C: /scan

PowerShell 的等價寫法:

Repair-Volume -DriveLetter C -Scan

跑完之後,依官方定義,所有偵測到的損毀已經被寫進 $corrupt 系統檔案,等著後續處理。要注意的是,「不嘗試修復」指的是不做離線修復——官方對 /forceofflinefix 的定義是「略過所有線上修復,把找到的缺陷全部排入離線修復佇列」,反過來說明 /scan 預設仍會進行線上修復。所以這一步的正確理解是:不需要鎖定磁碟區、不會讓你停機,而不是完全不動磁碟。

如果希望它跑快一點,而且你當下不介意系統反應變慢,可以加上 /perf:

chkdsk C: /scan /perf

方法二:確認有問題,再用 /spotfix 定點修

只有在方法一確實找到問題時,才需要這一步。它會讓磁碟區短暫離線,只修 $corrupt 清單裡的項目,不重掃整碟:

chkdsk C: /spotfix

PowerShell 等價寫法:

Repair-Volume -DriveLetter C -SpotFix

系統磁碟(通常是 C:)無法在執行中離線,所以對 C: 下這個指令時,系統會要求排到下次重新啟動再執行。這是正常行為,不是失敗。 排定之後重新啟動,開機時的處理時間通常遠短於傳統的完整 chkdsk,因為要修的項目已經被縮小到清單上那幾筆。

方法三:真的需要離線全掃時,才動 /f 或 /r

先分清楚兩者:

參數官方定義的動作需要鎖定磁碟什麼時候才用
/f修正磁碟上的錯誤是檔案系統結構明顯不一致,且 /scan 與 /spotfix 無法收斂
/r尋找損壞磁區並救回可讀資訊,含 /f是懷疑實體磁區有問題,且已接受它會讀過整碟
/b清除損壞叢集清單並重新掃描,含 /r是官方註明:把磁碟區映像到新硬碟之後
/x強制卸載磁碟區,含 /f是非系統磁碟需要立即離線修復

執行方式:

chkdsk C: /f

若確定要做整碟磁區檢查:

chkdsk C: /r

對系統磁碟執行時,同樣會被要求排到下次重新啟動。官方文件也說明:若磁碟分割是開機分割區,chkdsk 檢查完後會自動重新啟動電腦。

另外兩個可以縮短時間的官方參數,僅限 NTFS:/i 執行較不嚴謹的索引項目檢查,/c 不檢查資料夾結構中的循環,兩者都會減少 chkdsk 所需時間——代價是檢查沒那麼徹底,官方在備註中明確說明這兩個開關是跳過某些磁碟區檢查來換取時間。

🛑 停止條件(符合任一,請不要繼續往下跑)

  • 磁碟已出現規律異音、敲擊聲,或系統反覆凍結後才恢復
  • 上面有尚未備份的重要資料——請先做映像備份或把資料複製出來,再談修復
  • 你不確定要修的是哪一個磁碟區代號
  • 這台是公司或學校的管控設備,而你沒有 IT 授權
  • /scan 已回報大量損毀,而磁碟同時有 SMART 警告——此時應優先做資料搶救,而不是修檔案系統
  • 指令輸出與本文描述明顯不符

這幾種情況下繼續跑 /r,等於讓一顆可能正在惡化的磁碟再被完整讀取一遍;對於已經在衰退的裝置,這是額外的負擔,而不是治療。


✅ 驗證修復結果

不要只看畫面跑完就當作沒事,官方提供了兩個可驗證的訊號。

第一個是結束代碼。 官方文件列出 chkdsk 結束後回報的代碼:

結束代碼意義
0未發現錯誤
1發現錯誤且已修正
2已執行磁碟清理(例如記憶體回收),或因未指定 /f 而未執行清理
3無法檢查磁碟、錯誤無法修正,或因未指定 /f 而未修正錯誤

跑完後在同一個命令提示字元視窗查看:

echo %errorlevel%

第二個是事件記錄。 開機時跑的那一輪,畫面閃過去就沒了,但記錄會留下。官方建議的做法是在事件檢視器中篩選 Chkdsk 與 Wininit 兩個事件來源;PowerShell 的等價查詢:

get-winevent -FilterHashTable @{logname="Application"} |
  ?{$_.providername -match "wininit"} | fl timecreated, message

把 wininit 換成 chkdsk,就能看到另一個來源的記錄。官方只列出 Chkdsk 與 Wininit 兩個事件來源、並未指明哪一個對應開機時執行的那一輪,所以兩個來源都要篩過——只查其中一個,常常會覺得「怎麼什麼都沒有」。

如果先前跑的是 /scan,而報告顯示磁碟區仍被標記為需要處理,可以用官方指令查詢 dirty 旗標狀態:

fsutil dirty query C:

🔙 萬一翻車:回退步驟

檔案系統修復本身沒有「復原鍵」,所以這一段講的是如何把系統退回到你動手之前的排程狀態,以及事情不對時該往哪走。

情境一:排了開機檢查,但想取消

如果你按了 Y 排定下次重新啟動時檢查,又反悔了,官方指令是把該磁碟區排除在開機檢查之外:

chkntfs /x C:

/x 的官方定義是:指定一個或多個磁碟區在電腦啟動時排除檢查,即使該磁碟區已被標記為需要執行 chkdsk。

要把設定改回原廠行為,官方提供的還原指令是:

chkntfs /d

它會還原所有 chkntfs 的預設設定(自動檢查的倒數時間除外),也就是回到「啟動時檢查所有磁碟區、對 dirty 的磁碟區執行 chkdsk」。

⚠️ 請注意還原的方向:如果你在動手前曾經用 chkntfs /t 或 /x 調整過設定,正確的回退目標是你操作前的那份設定值,不是本文寫的任何固定值。動手前建議先執行不帶參數的 chkntfs C: 與 chkntfs /t 把當前狀態記下來,回退時照著記錄還原。你這台機器的設定可能已被調整過,直接照抄別人貼的數值,等於用別人的狀態覆蓋你自己的。

情境二:修復途中被中斷

先別緊張。官方明講:取消或中斷 chkdsk 不應該讓磁碟區比執行前更為損毀,再次執行 chkdsk 會進行檢查,並且應該可以修復磁碟區上剩餘的損毀。所以正確做法是重新開機、讓系統完成它自己排定的動作,再跑一次確認狀態,而不是立刻改用更重的參數硬碰。

情境三:修完之後檔案不見或系統無法開機

停止一切進一步的寫入動作。這裡要特別說明適用範圍:官方在備註中提醒對 FAT 檔案系統的修復通常會改變磁碟的檔案配置表,有時會造成資料遺失——這句話官方是針對 FAT/FAT32 講的,不是 NTFS 的通則。但無論檔案系統為何,修復動作都在改寫結構,這就是本文一開始要求先備份的原因。此時應以資料搶救為優先,把磁碟接到另一台機器唯讀讀取,而不是繼續在原機上反覆修。

若是開機層面的問題,那已經超出檔案系統修復的範圍,請改走開機修復的路線,可參考站內〈UNMOUNTABLE_BOOT_VOLUME(0xED)開機卡死?先讀 Parameter 2 再決定救法〉。


💡 總結:預防再次發生

這一題最常見的狀況不是「磁碟真的壞了」,而是先用錯工具、把時間浪費在錯的地方:機器一有狀況就掛 chkdsk /f /r 過夜,隔天早上看到跑完了就當作沒事,其實既沒確認它修了什麼,也沒確認它是不是真的掃完。這篇的三個參數順序,就是為了把「先看清楚再動手」變成預設流程。

三個可以立刻養成的習慣:

  1. 把 /scan 當健檢,不要把 /f /r 當健檢。 前者不需鎖定磁碟、可線上執行;後者要鎖定磁碟、要你停機,是治療不是體檢。
  2. 看記錄,不要看畫面。 開機時那一輪的結果通常會進事件記錄,Wininit 與 Chkdsk 兩個來源都要看。
  3. 檔案系統修復不等於資料備份。 chkdsk 的工作是讓結構自洽,它從來不保證你的檔案內容完好;真正的保險是另一份備份。

如果你要處理的是檔案系統以外的系統檔損毀,那是另一套工具,可以參考站內〈Windows 不穩、藍屏?系統檔案損毀自救術:SFC 與 DISM 指令修復教學〉;若你的狀況已經伴隨 NTFS 相關藍屏代碼,請直接看〈NTFS_FILE_SYSTEM(0x24)藍屏怎麼修?先別急著重灌,照這篇揪出磁碟真兇〉。


❓ 常見問題

Q:chkdsk /f 跟 /r 到底差在哪?兩個一起打會不會比較保險?

不會。依官方定義,/r 已經包含 /f 的功能,額外多做的是實體磁碟錯誤的分析。兩個一起下的實際效果等同只下 /r,不會多修任何東西,只會保證跑最久的那條路徑一定被執行。

Q:固態硬碟需要跑 /r 嗎?

以「修好實體壞軌」為目的來說,不需要。官方文件說明,在固態硬碟上把叢集標記為損壞是邏輯層的動作,不是實體重新對應。一般而言,實體層的壞塊管理由固態硬碟控制器負責(這一句是背景說明,不在官方原文範圍內)。若你的目的是確認檔案系統結構,/scan 就夠了。

Q:跑到一半可以中斷嗎?

官方的說法分兩層:不建議中斷,但取消或中斷 chkdsk 不應該讓磁碟區比執行前更為損毀,再次執行 chkdsk 會進行檢查,並且應該可以修復剩餘的損毀。所以萬一真的斷了,不必當成災難,重跑一次即可;但也不要養成隨手中斷的習慣。

Q:為什麼不加參數跑 chkdsk 會看到一堆錯誤?

官方備註寫得很明白:在使用中的分割區上未指定 /f 執行 chkdsk,可能回報假性錯誤,因為它無法鎖定磁碟。這種結果不能拿來判斷硬碟健康。

Q:什麼情況反而不該跑 chkdsk?

磁碟有異音、SMART 已報警、或上面有尚未備份的重要資料時。這幾種情況下,正確順序是先把資料複製出來或做映像,再談修復。

Q:修完之後又復發怎麼辦?

反覆出現檔案系統損毀,可能不是檔案系統本身的問題,而是底層儲存或硬體出狀況——官方在說明「chkdsk 完成得異常快」時,就把「磁碟可能有讀取磁頭故障或其他硬體問題」列為可能成因之一。這時該查的是磁碟本身的健康與事件記錄中的儲存堆疊錯誤,而不是再跑一次 chkdsk。


🔗 延伸閱讀


📎 參考資料來源

📖 第一級|廠商官方:

⚠️ 本文核心事實以第一級為準;本文為官方文件解析(證據等級 E3),未包含站長第一手實測數據。

📅 本文查證戳記:2026-09-06 依據 Microsoft 官方 Windows Commands、Storage 模組文件與 Building Windows 8 封存文撰寫。

若 Microsoft 日後改版 chkdsk 或 Repair-Volume 官方文件、導致本文參數說明或步驟失效,將於下次複檢時更新本文。


廣告