Windows2000磁盘扫描功能( 二 )



三、用脚本从程序中安排卷的修复日程
由于可以通过设置或重设注册表 , 来控制 Autochk , 因此可使用脚本 , 从程序中安排卷的修复日程 。
在记事本程序中 , 使用.VBS文件扩展名存储相应文件(例如:MyScript.vbs) 。同时 , 建议您在一个公共文 件夹(例如:C:Scripts)中保存这些脚本 。打开命令行窗口 。如果需要 , 使用cd命令切换到用以存储脚本的 文件夹中 。在命令行窗口中 , 输入csript 命令并在其后跟随脚本名称 。
例如:
cscript myscript.vbs
1、修改 AutoChk 的 Timeout 值
为 Autochk.exe 设定自动延迟时间为 30 秒 。适用于 Windows XP 或 Windows 2003 Server 。
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!" & strComputer & "rootcimv2")
Set colAutoChkSettings = objWMIService.ExecQuery _
("Select * from Win32_AutochkSetting")
For Each objAutoChkSetting in colAutoChkSettings
objAutoChkSetting.UserInputDelay = 30
objAutoChkSetting.Put_
Next
2、防止 AutoChk 在开机时自动运行

即使电脑下次开机时 , 就算 C盘的 "字位" 已被设定, Autochk 也不会对C磁盘执行检查 。适用于; Windows XP 或 Windows 2003 Server 。
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!" & strComputer & "rootcimv2")
Set objDisk = objWMIService.Get("Win32_LogicalDisk")
errReturn = objDisk.ExcludeFromAutoChk(Array("C:"))
Wscript.Echo errReturn
3、执行 ChkDsk
对电脑的D盘执行ChkDks.exe 。适用于 Windows XP 或 Windows 2003 Server 。
Const FIX_ERRORS = True
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!" & strComputer & "rootcimv2")
Set objDisk = objService.Get("Win32_LogicalDisk.DeviceID="D:"")
errReturn = objDisk.ChkDsk(FIX_ERRORS)
Wscript.Echo errReturn
4、安排在电脑下一次重新启动时 , 对 C 盘执行 Autochk.exe 。适用于 Windows XP 或
Windows 2003 Server。
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!" & strComputer & "rootcimv2")
Set objDisk = objWMIService.Get("Win32_LogicalDisk")
errReturn = objDisk.ScheduleAutoChk(Array("C:"))
Wscript.Echo errReturn

 四、几点重要说明

1、开机时按下某个键跳过 Autochk
如果安排 Chkdsk 在启动时运行以检查某个卷 , 但实际启动时决定按下某个键跳过Autochk , 则 Autochk 将 不会检查该卷 , 并删除相应的注册表项 , 在以后 , Autochk也不会检查该卷 。
2、Autochk应用程序事件日志
当 Autochk 在启动时运行检查某个卷时 , 它会输出记录到一个称为 Bootex.log 的文件中 , 该文件放在被 检查卷的根目录下 。随后 , Winlogon 服务将每个 Bootex.log文件的内容移到“应用程序事件日志”中 。每个 被检查卷的事件日志消息按以下方式:
记录:
事件 ID:1001
源:Winlogon
说明:它包括文件系统类型、驱动器号或 GUID 及卷名称或序列号 , 可以帮助确定Chkdsk 检查的是哪个卷 。此外还包括 , Chkdsk 是因为用户的安排而运行的呢 , 还是因为已设置了脏字位而运行的等信息 。
3、以只读方式运行的 Chkdsk 未检测到 NTFS 卷上的损坏
当只读模式对一个使用 NTFS 文件系统的磁盘卷运行 Chkdsk 时 , Chkdsk 可能检测不到磁盘结构的损坏 。原因是如果主文件表中的 $logfile 数据区被破坏 , 则可能会出现这一现象 。解决方案是若要解决这一问题 , 请在运行 Chkdsk 时使用 /f 选项 , 以便重新初始化 $logfile 数据区并修复损坏问题 。
在命令提示符下键入下面的命令 , 然后按 ENTER 键
chkdsk volume_label :/v /f

推荐阅读