我想用 cmder 替換預設的 cmd,但 cmder 無法運行 Contig 來整理硬碟上我經常使用的資料夾的碎片。該命令Contig.exe -v -s E:\WarThunder
在cmd上運行良好,但它只是在cmder上彈出幫助選單(例如解析錯誤的參數)。
我怎樣才能解決這個問題。任何想法都歡迎
答案1
Contig.exe(來自 SysInternal 工具)有一個嚴重的錯誤:它無法偵測符號連結(或目錄連線)和已安裝磁碟區的存在。在某些情況下,目標檔案(或方向連接的目標目錄)甚至可能不存在,在這種情況下,它將因無法獲取其範圍而在當前用戶的 Crashdump 目錄中產生轉儲而崩潰。
預設情況下,Contig.exe 不應遵循任何符號連結的目標、任何目錄連接的目標或目標(如果它是掛載點)。相反,如果應該只對連結或連接點或安裝點本身進行分析/碎片整理。
- 如果想要對符號連結或連結的目標進行分析/碎片整理,則應該有一個附加的「-f」選項來啟用以下重定向。預設情況下該選項應處於關閉狀態。
- 如果想要對安裝點的目標進行分析/碎片整理,則應該有一個附加的“-m”選項來啟用對它們的存取。預設情況下該選項應處於關閉狀態。
- 如果「-f」或「-m」選項與「-s」(遞歸子目錄)一起使用,contig.exe應該透過保留每個存取目錄的磁碟區ID和檔案ID來追蹤存取的路徑,並且永遠不會重新訪問進一步相同的節點(以避免堆疊中已存在的相同訪問父目錄中的無限遞歸循環)。
ATTRIB.EXE 命令列工具(當與「/S」一起使用遞歸子目錄時使用其「/L」選項)部分解決了此類類似的錯誤,但是當安裝點中存在已安裝的磁碟區時,此錯誤仍然存在。對於ICACLS.exe 工具,顯然這是正確處理的(它從不訪問連結的目標,而只是訪問連結本身),但是它仍然存在掛載點問題(到不同的捲,可能在VHDX 中,或到另一個卷)當前卷的目錄)。
此類錯誤會影響其他工具,特別是備份/復原工具(包括Windows 8/8.1/10/11 中仍存在的舊版「Windows 7」備份,它也可能無法正確並成功建立基於檔案的備份,包括各種符號備份)預設存在於使用者設定檔中的連結或結點,但僅標記有舊的「隱藏」屬性,或者如果未明確從子目錄清單中排除它們,則不進行備份/還原)
Windows 尚未完全測試對符號連結(包括 NTFS 中的「目錄連接」)的完整且有效的正確支援。硬連結(NTFS 支援同一磁碟區上的檔案/目錄之間)也可能是一個問題,其中可能存在無限遞歸。 Windows 在許多地方仍然採用舊 FAT 檔案系統的行為,其中任何檔案或目錄只能從唯一的路徑存取;但讓我們記住,符號連結和掛載點(對於目錄)已經存在很長時間了(它們存在於IBM-DOS、MS-DOS 或DR-DOS 中,以及各種DOS 擴充程式中、掛載的FAT 磁碟區或掛載的網路磁碟區上,很久以前就存在了)第一個 16 位元版本的 Windows!
可能是Contig.exe 的這種錯誤(以及它的一些管理權限和可以彈出協定對話框的內部「許可證檢查」)可能會導致「cmder」拒絕使用Contig.exe(它不是純粹的命令列工具,因為它必須能夠使用 Windows 桌面而不僅僅是標準 I/O 串流)