如何获得启动时运行的CHKDSK的结果? [英] How can I get the results of a CHKDSK that run on boot?

查看:55
本文介绍了如何获得启动时运行的CHKDSK的结果?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

CHKDSK在我的计算机重新引导时运行,并显示了一些内容. 问题是我不知道它显示了什么,因为随后进行了 完成后重新引导计算机.我如何停止它, 暂停还是让我看看它做了什么?

CHKDSK ran when my machine rebooted, and displayed some stuff. Problem is I have no idea what it displayed, since it then proceeded to reboot the machine when it was done. How do I get it to stop, pause or otherwise let me see what it did ?

chkdsk无法运行,因为该卷正在被另一个进程使用 ?,CHKDSK需要对其正在检查的磁盘的独占访问权 被指示尝试修复或修理.如果该磁盘是您的 Windows驱动器(C :),CHKDSK无法具有独占访问权,因为 Windows仅使用该驱动器来运行您的系统.

chkdsk cannot run because the volume is in use by another process mean ?, CHKDSK needs exclusive access to the disk it’s checking if it’s been instructed to attempt fixes or repairs. If that disk is your Windows drive (C:), CHKDSK can’t have exclusive access, because Windows is using that drive simply to run your system.

重新启动时,将在加载Windows之前执行CHKDSK.

When we restart, the CHKDSK is performed before Windows is loaded.

CHKDSK像往常一样运行,并在完成后重新启动系统-当然,这可能会导致屏幕上显示的所有进度或结果消失.

CHKDSK runs as it normally does, and when it completes, it reboots the system – which, of course, causes any progress or results that might have been displayed on-screen to disappear.

为了创建一个有用的工具来维护我的硬盘,以检查,修复和修复它们的错误.

In order to create a helpful tool for maintenance of my hard drives to check, fix and repair them for errors.

我做了这批

@echo off
Title Check Disk drives for errors and fix them by Hackoo 2016
mode con cols=67 lines=5 & Color 0A
:::::::::::::::::::::::::::::::::::::::::
:: Automatically check & get admin rights
:::::::::::::::::::::::::::::::::::::::::
set "TmpLog=%Tmp%\TmpLog.txt"
set "Log=%~dp0%computername%_%~n0.txt"
If Exist "%TmpLog%" Del "%TmpLog%"
If exist "%Log%" Del "%Log%"
REM  --> Check for permissions
Reg query "HKU\S-1-5-19\Environment" >nul 2>&1
REM --> If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
Echo.
ECHO                        **************************************
ECHO                         Running Admin shell... Please wait...
ECHO                        **************************************

    goto UACPrompt
) else ( goto gotAdmin )

:UACPrompt
    echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
    set params = %*:"=""
    echo UAC.ShellExecute "cmd.exe", "/c ""%~s0"" %params%", "", "runas", 1 >> "%temp%\getadmin.vbs"

    "%temp%\getadmin.vbs"
    del "%temp%\getadmin.vbs"
    exit /B

:gotAdmin
::::::::::::::::::::::::::::
::          START         ::
::::::::::::::::::::::::::::
( Echo Scan started @ & Date /T & Time /T & echo ************************ ) > "%TmpLog%"
setlocal ENABLEDELAYEDEXPANSION
for /f "tokens=2" %%i in ('wmic logicaldisk where "drivetype=3" ^|find /i ":"') do (
    set "fix=%%i"
        Call :Affich !fix!
    (
        echo !fix! Drive 
        echo ************************
        echo(
        (echo O
        echo Y) | CHKDSK !fix! /f 
        echo(
        echo ************************
    )>> "%TmpLog%"
)
EndLocal
Goto Question
Exit /b

:Question
( echo Scan finished @ & Date /T & Time /T & echo ************************ )>> "%TmpLog%"
CMD /U /C Type "%TmpLog%" > "%Log%"
If Exist "%TmpLog%" Del "%TmpLog%"
(
    echo    Answ = MsgBox("Did you want to reboot the computer to complete the scanning ?",VbYesNo+VbQuestion,"Reboot the computer to check hard disk drives for errors by Hackoo"^)
    echo    If Answ = VbYes then 
    echo        wscript.Quit(0^)
    echo    Else
    echo        wscript.Quit(1^)
    echo    End If
)>"%tmp%\%~n0.vbs"

Cscript /nologo "%tmp%\%~n0.vbs"
IF "%errorlevel%" EQU "1" (start "" "%Log%" & Exit ) else (goto Shutdown)

:Shutdown 
echo(
cls
echo(
echo     Save your work - Reboot of your computer in 20 seconds
echo(
echo   Enregistrer vos documents - Redemarrage du PC dans 20 seconds 
Shutdown.exe /r /t 20 /c "Enregistrer vos documents - Redemarrage du PC dans 20 secondes"
start "" %Log%
pause>nul
exit /b

:Affich
Cls
echo(
echo                ***********************************
Echo                 Please wait a while Scanning "%~1"
echo                ***********************************
Timeout /T 2 /nobreak>nul
exit /b

所以,我的问题是: 我如何获得通过批处理或powershell在启动时运行的CHKDSK的结果?

So, my question is : How can i get the results of a CHKDSK that run on boot by batch or powershell ?

推荐答案

我在此处找到了答案:

get-winevent -FilterHashTable @{logname="Application"; id="1001"}| ?{$_.providername –match "wininit"} | fl timecreated, message | out-file Desktop\CHKDSKResults.txt

在批处理文件中,我们可以这样做:

In batch file we can do like that:

@echo off
set "Log=%tmp%\CHKDSKResults.txt"
If Exist "%Log%" del "%Log%"
Powershell -Command "& "Get-winevent -FilterHashTable @{logname='Application'; id='1001'}^|?{$_.providername -match 'wininit'} ^| fl timecreated, message ^| out-file '%Log%'"
Start "" "%Log%"

2016年7月27日最终代码:

EDIT : On 27/07/2016 The final code :

@echo off
Title Check Disk drives for errors and fix them by Hackoo 2016
mode con cols=67 lines=5 & Color 0A
:::::::::::::::::::::::::::::::::::::::::
:: Automatically check & get admin rights
:::::::::::::::::::::::::::::::::::::::::
set "TmpLog=%Tmp%\TmpLog.txt"
set "Log=%~dp0%computername%_%~n0.txt"
set "MyVBSFile=%~dp0%~n0_On_Boot.vbs"
set "Value=CHKDSK_ON_BOOT"
Set "Key=HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce"
If Exist "%TmpLog%" Del "%TmpLog%"
If exist "%Log%" Del "%Log%"
REM  --> Check for permissions
Reg query "HKU\S-1-5-19\Environment" >nul 2>&1
REM --> If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
Echo.
ECHO                        **************************************
ECHO                         Running Admin shell... Please wait...
ECHO                        **************************************

    goto UACPrompt
) else ( goto gotAdmin )

:UACPrompt
    echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
    set params = %*:"=""
    echo UAC.ShellExecute "cmd.exe", "/c ""%~s0"" %params%", "", "runas", 1 >> "%temp%\getadmin.vbs"

    "%temp%\getadmin.vbs"
    del "%temp%\getadmin.vbs"
    exit /B

:gotAdmin
::::::::::::::::::::::::::::
::          START         ::
::::::::::::::::::::::::::::
( Echo Scan started @ & Date /T & Time /T & echo ************************ ) > "%TmpLog%"
setlocal ENABLEDELAYEDEXPANSION
for /f "tokens=2" %%i in ('wmic logicaldisk where "drivetype=3" ^|find /i ":"') do (
    set "fix=%%i"
        Call :Affich !fix!
    (
        echo !fix! Drive 
        echo ************************
        echo(
        (echo O
        echo Y) | CHKDSK !fix! /f 
        echo(
        echo ************************
    )>> "%TmpLog%"
)
EndLocal
Goto Question
Exit /b
::******************************************************************
:Question
( echo Scan finished @ & Date /T & Time /T & echo ************************ )>> "%TmpLog%"
CMD /U /C Type "%TmpLog%" > "%Log%"
If Exist "%TmpLog%" Del "%TmpLog%"
(
    echo    Answ = MsgBox("Did you want to reboot the computer to complete the scanning ?",VbYesNo+VbQuestion,"Reboot the computer to check hard disk drives for errors by Hackoo"^)
    echo    If Answ = VbYes then 
    echo        wscript.Quit(0^)
    echo    Else
    echo        wscript.Quit(1^)
    echo    End If
)>"%tmp%\%~n0.vbs"

Cscript /nologo "%tmp%\%~n0.vbs"
IF "%errorlevel%" EQU "1" ( goto AddKey ) else ( goto Shutdown )
::******************************************************************
:Shutdown
echo(
cls
echo(
echo     Save your work - Reboot of your computer in 120 seconds
echo(
echo   Enregistrer vos documents - Redemarrage du PC dans 120 seconds 
Call:AddKey && Shutdown.exe /r /t 120 /c "Enregistrer vos documents - Redemarrage du PC dans 120 secondes"
pause>nul
exit /b
::******************************************************************
:Affich
Cls
echo(
echo                ***********************************
Echo                 Please wait a while Scanning "%~1"
echo                ***********************************
Timeout /T 2 /nobreak>nul
exit /b
::******************************************************************
:AddKey
reg query "%key%" /v "%Value%" >nul 2>&1
If "%errorlevel%" EQU "0" ( Goto :EOF
    ) Else (
    reg add "%Key%" /v "%Value%" /t REG_SZ /d "%MyVBSFile%">nul
    (
        echo Option Explicit
        echo 'Run as Admin
        echo If Not WScript.Arguments.Named.Exists("elevate"^) Then
        echo    CreateObject("Shell.Application"^).ShellExecute DblQuote(WScript.FullName^) _
        echo    , DblQuote(WScript.ScriptFullName^) ^& " /elevate", "", "runas", 1
        echo     WScript.Quit
        echo End If
        echo Dim ws,PSCommand,LogFile,ret
        echo LogFile = Left(Wscript.ScriptFullName,InstrRev(Wscript.ScriptFullName, "."^)^) ^& "txt"
        echo set ws = createobject("wscript.shell"^)
        echo PSCommand = "cmd /c Powershell -Command ""& ""Get-winevent -FilterHashTable @{logname='Application'; id='1001'}^|?{$_.providername -match 'wininit'} ^| fl timecreated, message ^| out-file "^& SimpleQuote(LogFile^) ^&""
        echo ret = ws.run(PScommand,0,True^)
        echo ws.run DblQuote(LogFile^)
        echo '**************************************
        echo Function DblQuote(Str^)
        echo    DblQuote = chr(34^) ^& Str ^& chr(34^)
        echo End function
        echo '**************************************
        echo Function SimpleQuote(Str^)
        echo    SimpleQuote = ChrW(39^) ^& Str ^& ChrW(39^)
        echo End Function
        echo '**************************************
    )>"%MyVBSFile%"
start "" "%Log%"
)   
Exit /b
::*******************************************************************

这篇关于如何获得启动时运行的CHKDSK的结果?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆