【问题标题】:Command Prompt read system output命令提示符读取系统输出
【发布时间】:2016-06-20 22:47:59
【问题描述】:

您好 Stackoverflow 社区,

在多次手动通过命令提示符使用维护和完整性命令修复计算机之后,我决定创建一个批处理文件,根据命令输出执行相同的技术。在编写批处理文件方面,我正在努力解决它从命令本身而不是文本文件中读取数据的唯一问题。例如;

如果 Chkdsk 回来说有多个坏扇区,使用 if 子句或其他语法,它将安排修复,即 chkdsk /r 下次重新启动等。下面红色突出显示的图片是我想在可能的情况下阅读的部分.

@echo 关闭 chkdsk /* 如果发现问题 */ chkdsk /f

【问题讨论】:

  • 查看命令for及其/F选项,它提供了读取和解析其他命令输出的能力;打开命令提示符窗口并键入for /? 以获取详细信息...我可以想象类似chkdsk | find "in bad sectors" 的内容并像for /F %%B in ('chkdsk ^| find "in bad sectors"') do (echo %%B) 一样解析它(这只是输出坏扇区中的KB 数;直接在命令提示符下测试它而不是比批处理文件,状态%B 而不是%%B 两次)...
  • @aschipfl 作为学术旁注,人们还可以使用 WMI 检查硬盘驱动器的 SMART 状态。例如:wmic diskdrive where "not status='OK'" get caption,status /value 将为您提供 SMART 状态处于警告/错误状态的驱动器列表。 wmic /namespace:\\root\wmi path MSStorageDriver_FailurePredictData 将返回包含更详细状态信息的字节数组,尽管我还没有想出破译这些值的方法。我怀疑this article 可能有底漆。
  • 好主意,@rojo!这样的 WMI 查询会触发磁盘检查,还是依赖于前面的检查?
  • @aschipfl 它包含读取失败的计数、硬盘温度、已知的坏集群等。它不会触发主动扫描,因为它更像是硬件而不是文件系统。并非所有掉落的硬盘驱动器在真正死亡之前都未通过 SMART 阈值;但是如果硬盘驱动器显示“PredFail”状态,则该备份您的数据并更换它。 SMART 是对 chkdsk 的补充,而不是替代品。

标签: batch-file cmd


【解决方案1】:

因为您想搜索两个字符串,您要么必须执行大量不合理的代码,要么只需解析输出两次。使用临时文件不必运行两次chkdsk 命令:

chkdsk d: >out.txt
type out.txt
find "No further action is required" out.txt >nul && find " 0 KB in bad sectors" out.txt >nul && goto :good
REM repair
:good
echo nothing to do

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-18
    • 1970-01-01
    相关资源
    最近更新 更多