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?
Je peux penser à au moins 2 façons différentes:
à 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.
À 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.
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é
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.
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.
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.