2016-07-22 21 views
2

Ich habe diese vbs (Teil des Skripts wurde von hackoo zur Verfügung gestellt), um sfc.exe zu starten, um Systemdateien zu reparieren, aber ich muss einige Funktionen hinzufügen, wie eine Nachricht und Ich brauche beim Ausführen von sfc.exe, zeigen Sie eine Meldung "warten" (versteckt das sfc.exe Fenster) und das Ende des Programms, beenden Sie die letzte Nachricht, aber das Skript funktioniert nicht gut (sfc.exe schlägt fehl und versteckt das Fenster und zeigt die letzte Nachricht vor dem Abschluss)fix vbs zu starten ausblenden System File Checker

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 

Hinweis: Teil "warten", während sfc.exe

Dank versteckt läuft

012 fehlt
+0

im Zweifelsfall lesen Sie die [Dokumentation] (https://msdn.microsoft.com/en-us/library/d5fk67ky%28 v = vs.84% 29.aspx). –

+0

Was versuchst du mit dieser Zeile zu tun? Objshell.run NewPath, vbhide Es gibt keinen Verweis auf objshell oder NewPath – dbmitch

+0

Und das 'Execution = ws.run (MyCommand, 1, False)' wartet nicht auf die Rückgabe - so es macht genau das, was du sagst. – dbmitch

Antwort

1

Um die Konsole zu verstecken Sie sollten es so schreiben:

ändern False-True für bis zum Prozess wartet beenden und den Wert 1-0 der Konsole

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

Und Ihr Code sollte verstecken aussehen wie diese:

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

Sehr guter Hackoo, aber fehlt der Teil von "Wait ..." beim Ausführen von versteckten sfc – BrianC