web-dev-qa-db-fra.com

Comment arrêter un script vb en cours d'exécution dans Windows

J'utilise Windows 7

J'ai écrit un script pour vérifier si mon ordinateur portable fonctionne en batterie ou en courant alternatif. Je l'ai googlé et j'ai succombé à cela.

dim a
a=1
Do While a=1 
If IsLaptop( "." ) Then
   ' WScript.Echo "Laptop"
Else
   ' WScript.Echo "Desktop or server"
End If
Loop

Function IsLaptop( myComputer )
    On Error Resume Next    
    Set objWMIService = GetObject( "winmgmts://" & myComputer & "/root/cimv2" )
    Set colItems = objWMIService.ExecQuery( "Select * from Win32_Battery", , 48 )
    IsLaptop = False
    For Each objItem in colItems
        if objItem.BatteryStatus=2 and objItem.EstimatedChargeRemaining=98 then
             WScript.Echo "Remove Ac Adapter Immediately"
        elseif objItem.BatteryStatus=1 and objItem.EstimatedChargeRemaining=10 then
             WScript.Echo "Pluggin to charger immediately"
        end if
    Next
    If Err Then Err.Clear
    On Error Goto 0
End Function

Mais mon problème est maintenant. Ce script exécute toujours un script comment arrêter si je souhaite terminer manuellement.

Est-il possible de trouver ce processus et de m'arrêter dans Windows?

8
shanmugamgsn

Je peux penser à au moins 2 façons différentes:

  1. à l'aide du Gestionnaire des tâches (Ctrl-Maj-Échap), sélectionnez l'onglet de processus, recherchez un nom de processus cscript.exe ou wscript.exe et utilisez Terminer le processus.

  2. À partir de la ligne de commande, vous pouvez utiliser taskkill/fi "imagename eq cscript.exe" (changer en wscript.exe si nécessaire)

Une autre façon utilise les scripts et WMI. Voici quelques conseils: recherchez la classe Win32_Process et la méthode Terminate.

13
Robin Caron

L'exécution des scripts peut être interrompue à partir du Gestionnaire des tâches.

Cependant, les scripts qui se concentrent en permanence programment les fenêtres en utilisant . AppActivate peuvent rendre très difficile l'accès au gestionnaire de tâches -i.e vous et le script se battra pour le contrôle. Par conséquent, je recommande d'écrire un script (que j'appelle auto-destruction pour des raisons évidentes) et de créer un raccourci clavier pour activer le script.

Script d'autodestruction:

Option Explicit
Dim WshShell
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "taskkill /f /im Cscript.exe", , True 
WshShell.Run "taskkill /f /im wscript.exe", , True  

Raccourci clavier: faites un clic droit sur l'icône du script, sélectionnez créer un raccourci, faites un clic droit sur l'icône du raccourci du script, sélectionnez les propriétés, cliquez sur le raccourci clavier et créez le vôtre.

tapez votre touche de raccourci et tous les scripts se terminent. À votre santé

5

dans votre code, juste après l'instruction 'do while', ajoutez cette ligne ..

`Wscript.sleep 10000`

Cela laissera votre script en veille pendant 10 secondes et laissera votre système se reposer. Sinon, votre processeur exécutera ce script des millions de fois par seconde et cela chargera certainement votre processeur.

Pour le tuer, passez simplement à taskmanager et tuez wscript.exe ou s'il n'est pas trouvé, vous trouverez cscript.exe, tuez-le en appuyant sur le bouton Supprimer. Ceux-ci seraient présents dans l'onglet processus de votre gestionnaire de tâches.

Une fois que vous avez ajouté cette ligne dans le code, je ne pense pas que vous ayez besoin de tuer ce processus. Il ne chargera pas votre CPU.

Passez une bonne journée.

2
Sultanahamer

Démarrez le Gestionnaire des tâches, cliquez sur l'onglet Processus, cliquez avec le bouton droit sur wscript.exe et sélectionnez Terminer le processus, puis confirmez dans la boîte de dialogue qui suit. Cela mettra fin au wscript.exe qui exécute votre script.

1
Debjit Mandal

Créez un fichier Name.bat contenant la ligne suivante.

taskkill /F /IM wscript.exe /T

Assurez-vous de ne pas dominer votre processeur. Si vous exécutez de longs scripts, la vitesse de votre processeur change et les lignes de script se remplacent.

1
Ho1m3s