2016-07-22 40 views
2

我有这个vbs(脚本的一部分是由hackoo提供)启动sfc.exe修复系统文件,但就像我需要添加一些功能,如消息和我需要在运行sfc.exe时,显示一条消息“等待”(隐藏sfc.exe窗口)并结束程序,退出最终消息,但脚本不能正常工作(sfc.exe无法隐藏窗口并显示在结束前的最后消息)修复vbs启动隐藏系统文件检查器

Option Explicit 
' Run as Admin 
    If Not WScript.Arguments.Named.Exists("elevate") Then 
    CreateObject("Shell.Application").ShellExecute WScript.FullName _ 
, WScript.ScriptFullName & " /elevate", "", "runas", 1 
WScript.Quit 
End If 
On Error Resume next 
mensaje = MSGBOX ("Start System File Checker", vbOKCancel, "System File Checker") 
If mensaje = vbOK Then 
Dim ws,MyCommand,Execution 
Set ws = createobject("wscript.shell") 
MyCommand = "%windir%\system32\SFC.exe /SCANNOW" 
Execution = ws.run(MyCommand,1,False) 
objshell.run NewPath,vbhide 
CALL MSGBOX ("System File Checker has finished", VBOKONLY, "System File Checker") 
Else 
CALL MSGBOX ("System File Checker has been canceled", VBOKONLY, "System File Checker") 
End If 
On Error GoTo 0 

注:缺少的一部分 “等”,同时运行隐藏SFC.EXE

感谢

+0

如果有疑问,请阅读[documentation](https://msdn.microsoft.com/en-us/library/d5fk67ky%28 V = vs.84%29.aspx)。 –

+0

你想用这行做什么'objshell.run NewPath,vbhide'没有提及objshell或NewPath – dbmitch

+0

而这个'Execution = ws.run(MyCommand,1,False)'不等待返回 - 所以它正在做你正在告诉它的东西。 – dbmitch

回答

1

要隐藏控制台,你应该把它写这样的:

变化FalseTrue等待,直到过程将结束,价值10隐藏控制台

Execution = ws.run(MyCommand,0,True) 

您的代码应看起来像这样:

Option Explicit 
' Run as Admin 
If Not WScript.Arguments.Named.Exists("elevate") Then 
    CreateObject("Shell.Application").ShellExecute WScript.FullName _ 
    , WScript.ScriptFullName & " /elevate", "", "runas", 1 
    WScript.Quit 
End If 
Dim ws,MyCommand,Execution,Question 
Question = MSGBOX ("Did you want to start the System File Checker ?", vbOKCancel+vbQuestion, "System File Checker") 
If Question = vbOK Then 
    Set ws = createobject("wscript.shell") 
    MyCommand = "%windir%\system32\SFC.exe /SCANNOW" 
    Execution = ws.run(MyCommand,0,True) 
    If Execution = 0 Then 
     Call MSGBOX ("System File Checker has finished", VBOKONLY, "System File Checker") 
    Else 
     Call MSGBOX ("System File Checker has been canceled", VBOKONLY, "System File Checker") 
     Wscript.quit(1) 
    End If 
Else 
    Call MSGBOX ("System File Checker has been canceled", VBOKONLY, "System File Checker") 
    Wscript.quit(1) 
End If 
+0

非常好的hackoo,但是在运行隐藏的sfc时缺少“Wait ...”的部分 – BrianC