2012-12-19 5 views
0

J'ai un script qui va redémarrer un ordinateur Windows en mode sans échec.Redémarrer l'ordinateur en mode sans échec - Optimiser le code

Ce script vbscript appelle un fichier BAT qui invite une élévation de l'UAC et redémarre l'ordinateur en mode sans échec.

Des suggestions sur la façon d'optimiser ce script? Et cela peut-il fonctionner sous Windows 8?

[code]Dim oShell, retCode 
Set oShell = WScript.CreateObject("WScript.Shell") 
Set objShell = CreateObject("Wscript.Shell") 

retCode = oShell.Popup("Do you want to restart your computer in Safe Mode", 0, "Restart In SafeMode", 4 + 48) 

Select Case retCode 
case 6, -1 
objShell.Run "elevaterestart.bat" 
case 7 
WScript.quit(1) 'No was chosen 
End Select 

Mise à jour: I mis à jour le script, comme l'a suggéré et a ajouté un Operation Canceled pop-up si un utilisateur sélectionne no

Dim oShell, retCode, MsgBox 
Set oShell = WScript.CreateObject("WScript.Shell") 
Set objShell = CreateObject("Wscript.Shell") 

retCode = oShell.popup("Do you want to restart your computer in Safe Mode", 0, "Restart    In Safe Mode", 4 + 48 + 256) 


If retCode = 6 Or retCode = -1 Then 
objShell.Run "elevaterestart.bat" 
Else 
oShell.popup "Operation Canceled", 0, "Restart In Safe Mode", 0 + 64 + 0 
End If` 
+0

Qu'entendez-vous par «optimiser»? Quelles sont les fonctionnalités, la fiabilité, la facilité d'utilisation, la maintenabilité ou les objectifs de performance que le script actuel ne parvient pas à atteindre? –

+0

Ai-je besoin des codes de sortie? ou va-t-il fonctionner sans le '(1)' –

Répondre

0

Il semble que la ligne de conduite objShell n'est pas nécessaire que votre variable objShell n'est jamais utilisé et est redondant avec oShell. VBScripts quittera sans l'appel wscript.quit (ExitCode) lorsque la fin du fichier est atteint, mais si vous appelez ceci à partir d'autre chose, le code de sortie 1 vous permettra de savoir que l'utilisateur a dit qu'ils ne voulait pas redémarrer (le code de sortie par défaut lorsque la fin du fichier est atteinte sans erreur est 0).

Je n'aurais pas utilisé une déclaration de cas - c'est généralement utilisé seulement par style si vous choisissez parmi une série d'options. Plus probablement j'aurais codé la dernière section comme ceci, mais ceci ne change pas la fonctionnalité du tout.

If retCode = 6 Or retCode = -1 Then 
    objShell.Run "elevaterestart.bat" 
Else 
    WScript.quit(1) 
End If 
+0

Merci, j'ai ajouté un script mis à jour ci-dessus. –

Questions connexes