![Windows 脚本现在占用您硬盘的几个小时](https://linux22.com/image/1533681/Windows%20%E8%84%9A%E6%9C%AC%E7%8E%B0%E5%9C%A8%E5%8D%A0%E7%94%A8%E6%82%A8%E7%A1%AC%E7%9B%98%E7%9A%84%E5%87%A0%E4%B8%AA%E5%B0%8F%E6%97%B6.png)
我想编写一个脚本来检查硬盘的运行时间,以防止丢失信息。有办法吗?我在网上查过了,但找不到任何批处理命令。谢谢帮助!
(PS:抱歉我的英文不好。)
答案1
如何从命令行检查开机时间?
获取磁盘电源开启时间.cmd:
@echo off
setlocal enabledelayedexpansion
rem get report using disksmartview from nirsoft
disksmartview /scomma smart.txt
for /f "usebackq tokens=1,2 delims=," %%l in (`type smart.txt`) do (
if "%%l" EQU "Disk Number" (
echo %%l: %%m
)
if "%%l" EQU "Power-On Hours (POH)" (
echo %%l: %%m
)
)
endlocal
示例输出:
> GetDiskPowerOnHours
Disk Number: 0
Power-On Hours (POH): 13245
Disk Number: 1
Power-On Hours (POH): 0
Disk Number: 2
笔记:
- 并非所有驱动器都会存储通电时间
- 话虽如此,通电时间并不是硬盘故障的有用指标(见下文)
更好的解决方案
使用 SMART 监控程序,它会提前警告您潜在的问题。
有许多可用的,包括:
-
HD Tune Pro 是一款功能丰富的硬盘/SSD 实用程序。它可用于测量驱动器的性能、扫描错误、检查健康状态 (SMART)、安全擦除所有数据等等。
-
HDD Health 4.2 支持 SSD 驱动器。HDD Health 是一款功能齐全的故障预测代理,适用于使用 2000、XP、Vista、Windows 7 和 Windows 8 的机器。它位于系统托盘中,可监控硬盘并提醒您即将发生故障。该程序使用内置于所有新硬盘中的自我监控和报告技术 (SMART),可以预测硬盘驱动器的故障。大量警报功能包括电子邮件、本地弹出消息、网络消息和事件日志记录,同时不占用任何系统资源。
-
HDDExpert 可让您清晰地了解硬盘 (HDD 或 SSD) 的运行状况和性能,并将 SMART 属性转换为可读指示。然后,它会根据检测到的硬盘故障数量推荐维护(升级风扇、购买备件、备份等)。
-
smartmontools 软件包包含两个实用程序(smartctl 和 smartd),用于使用内置于大多数现代 ATA/SATA、SCSI/SAS 和 NVMe 磁盘中的自我监控、分析和报告技术系统 (SMART) 来控制和监控存储系统。在许多情况下,这些实用程序将提供磁盘性能下降和故障的预警。Smartmontools 最初源自 Linux smartsuite 软件包,实际上支持 ATA/ATAPI/SATA-3 到 -8 磁盘和 SCSI 磁盘和磁带设备。它应该可以在任何现代 Darwin (Mac OS X)、Linux、FreeBSD、NetBSD、OpenBSD、Solaris、OS/2、Cygwin、QNX、eComStation 或 Windows 系统上运行。
预测硬盘故障
一家名为Backblaze收集了硬盘故障数据。该公司在公司博客上发布了这些数据,重点介绍了哪家制造商的硬盘故障频率最高。
在硬盘 SMART 统计数据它发布的数据准确地表明了哪 5 个 SMART 属性预示着即将发生驱动器故障:
根据经验,我们发现以下 5 个 SMART 指标预示着即将发生磁盘驱动器故障:
- SMART 5—重新分配的扇区数。
- SMART 187—报告的无法纠正的错误。
- SMART 188—命令超时。
- SMART 197—当前待处理扇区数。
- SMART 198—离线_无法纠正。
我们根据自己的经验以及业内其他人的意见选择了这 5 个统计数据,因为它们在各个制造商之间是一致的,并且可以很好地预测故障。
文章继续建议:
SMART 5: Reallocated_Sector_Count
1-4 keep an eye on it, more than 4 replace
SMART 187: Reported_Uncorrect
1 or more replace
SMART 188: Command_Timeout
1-13 keep an eye on it, more than 13 replace
SMART 197: Current_Pending_Sector_Count
1 or more replace
SMART 198: Offline_Uncorrectable
1 or more replace
同样来自 BackBlaze,值得一读的是一篇较新的博客SMART 统计数据告诉我们有关硬盘的哪些信息。
磁盘智能视图
DiskSmartView 是一个小型实用程序,可以检索聪明的 IDE/SATA 磁盘的信息(SMART = 自我监控、分析和报告技术)。这些信息包括磁盘型号/固件/序列号、磁柱/磁头、通电时间 (POH)、内部温度、磁盘错误率等。您可以使用 DiskSmartView 检索到的 SMART 信息来查明磁盘驱动器是否存在任何重大问题。
命令行选项
/stext <Filename>
将 SMART 信息保存到常规文本文件中。/stab <Filename>
将 SMART 信息保存到制表符分隔的文本文件中。/scomma <Filename>
将 SMART 信息保存到逗号分隔的文本文件 (csv) 中。/stabular <Filename>
将 SMART 信息保存到表格文本文件中。/shtml <Filename>
将 SMART 信息保存到 HTML 文件(水平)。/sverhtml <Filename>
将 SMART 信息保存到 HTML 文件(垂直)。/sxml <Filename>
将 SMART 信息保存到 XML 文件中。
来源磁盘智能视图
免责声明
我不隶属于尼尔软件无论如何,我只是他们软件的最终用户。
进一步阅读
- Windows CMD 命令行的 AZ 索引
- Windows CMD 命令的分类列表
- 对于/f- 循环命令以执行另一个命令的结果。
- 如果- 有条件地执行命令。
答案2
在我的系统上运行并出现输出错误:
C:\UTIL>Get-DiskPowerOnHours.cmd
磁盘编号:2
通电小时数 (POH):“48
建议将分隔符更改为制表符,因为我的输出在启动盘上的超过 48000 小时内添加了数千个逗号。
@echo off
setlocal enabledelayedexpansion
rem get report using disksmartview from nirsoft
disksmartview /stab smart.txt
:: Ensure the delims= <tab> as it looks like a space.
for /f "usebackq tokens=1,2 delims= " %%l in (`type smart.txt`) do (
if "%%l" EQU "Disk Number" (
echo %%l: %%m
)
if "%%l" EQU "Power-On Hours (POH)" (
echo %%l: %%m
)
)
endlocal
进行上述更改后:
C:\UTIL>Get-DiskPowerOnHours.cmd
磁盘编号:2
通电小时数 (POH):48,649