Reply Wechat Message
AI自动发送微信消息并回复,支持主动推送与上下文分析回复。
修复Windows上损坏的exFAT USB驱动器,避免格式化导致数据丢失。
openclaw skills install @solomonneas/exfat-recovery命令、参数、文件名以原文为准
当 Windows 提示外部硬盘“需要格式化”时,你的数据几乎总是完好无损的。问题通常出在 exFAT 启动区域损坏(多由写入缓存 + 非正常关机导致)。本技能将引导你完成诊断、修复和预防步骤。
Get-Disk | Format-Table Number, FriendlyName, Size, PartitionStyle, OperationalStatus, HealthStatus -AutoSize如果 HealthStatus: Healthy 且 OperationalStatus: Online,说明硬件正常。否则可能存在硬件故障(需另寻解决方法)。
Get-Partition -DriveLetter H | Format-Table PartitionNumber, DriveLetter, Size, Type -AutoSize分区可见 = 分区表完整。这是良好迹象。
Get-Volume -DriveLetter H | Format-List DriveLetter, FileSystem, Size, SizeRemaining, HealthStatus如果 FileSystem 为空且 Size 为 0,说明文件系统元数据已损坏,但分区仍然存在。
chkdsk H:关注输出中是否包含:Corruption was found while examining the boot region. 这表明问题可修复。
以管理员身份运行:
chkdsk H: /F该命令会从备份副本恢复 exFAT 启动区域(exFAT 在分区的扇区 12–23 处保存了备份启动扇区)。对于 8TB 容量、约 14 万文件的磁盘,耗时几分钟。
修复后验证:
Get-Volume -DriveLetter H
Get-ChildItem H:\ | Select-Object Name | Format-Table -AutoSizetestdisk_win.exe若文件系统无法恢复:
写入缓存是外部驱动器上 exFAT 损坏的首要原因。
设备管理器方法:
PowerShell(可脚本化):
# 根据实际设备调整 Ven_ 和 Prod_
$devPath = "HKLM:\SYSTEM\CurrentControlSet\Enum\SCSI\Disk&Ven_Samsung&Prod_PSSD_T5_EVO"
$instances = Get-ChildItem $devPath
foreach ($inst in $instances) {
$diskParamPath = Join-Path $inst.PSPath "Device Parameters\Disk"
if (Test-Path $diskParamPath) {
Set-ItemProperty -Path $diskParamPath -Name "UserWriteCacheSetting" -Value 0 -Type DWord
}
}即使禁用了写入缓存,仍建议使用 scripts/safe-shutdown.ps1 并注册为组策略关机脚本。完整设置请参阅 references/prevention-scripts.md。
使用 scripts/backup-boot-region.ps1 每周备份一次 exFAT 启动区域。若再次发生损坏,可直接从备份恢复,无需依赖 chkdsk。
# 以管理员身份运行 —— 直接向磁盘写入原始字节
$disk = "\\.\PhysicalDrive3" # 根据实际情况调整
$offset = 16777216 # 分区偏移量(字节)
$backupFile = "C:\path\to\exfat_boot_region_YYYYMMDD.bin"
$buf = [System.IO.File]::ReadAllBytes($backupFile)
$fs = [System.IO.File]::Open($disk, [System.IO.FileMode]::Open, [System.IO.FileAccess]::Write, [System.IO.FileShare]::ReadWrite)
[void]$fs.Seek($offset, [System.IO.SeekOrigin]::Begin)
$fs.Write($buf, 0, $buf.Length)
$fs.Flush()
$fs.Close()
# 然后执行:chkdsk H: /FexFAT 无日志机制。当 Windows 为外部驱动器启用了写入缓存,而系统发生重启(崩溃、更新、断电)时,未刷新的缓存写入数据不会被写入磁盘。启动区域(文件系统的“目录索引”)可能部分写入,导致无法读取。实际上,磁盘上的文件数据并未受损。
已收录 4 个 Skill