Как остановить VB скрипт, работающий в Windows - PullRequest
4 голосов
/ 05 ноября 2011

Я использую windows 7

Я написал скрипт, чтобы проверить, работает ли Мой ноутбук от батареи или от сети переменного тока.Я гуглил это и преуспел в этом.

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

Но моя проблема сейчас такова.Этот скрипт всегда запускает скрипт, как остановить, если я хочу завершить работу вручную.

Есть ли какой-нибудь способ найти этот процесс и остановиться в windows?

Ответы [ 5 ]

12 голосов
/ 05 ноября 2011

Я могу придумать как минимум 2 разных способа:

  1. с помощью диспетчера задач (Ctrl-Shift-Esc), выберите вкладку процесса, найдите имя процесса cscript.exe или wscript.exe и используйте команду End Process.

  2. Из командной строки вы можете использовать taskkill / fi "imagename eq cscript.exe" (при необходимости измените на wscript.exe)

Другой способ - использовать скрипты и WMI. Вот несколько советов: ищите класс Win32_Process и метод Terminate.

4 голосов
/ 13 декабря 2014

Запуск сценариев можно прервать из диспетчера задач.

Однако сценарии, которые постоянно фокусируют окна программы с использованием .AppActivate , могут очень затруднить доступ к диспетчеру задач - т.е. вы и сценарий будете бороться за контроль. Поэтому я рекомендую написать сценарий (который я называю самоуничтожением по понятным причинам) и создать комбинацию клавиш для активации сценария.

Скрипт самоуничтожения:

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  

Сочетание клавиш: щелкните правой кнопкой мыши значок сценария, выберите «Создать ярлык», щелкните правой кнопкой мыши на значке скрипта, выберите свойства, нажмите на ярлык и создайте свой собственный.

введите вашу комбинацию клавиш и все сценарии заканчиваются. Приветствия

2 голосов
/ 26 марта 2013

в вашем коде, сразу после оператора do while, добавьте эту строку.

`Wscript.sleep 10000`

Это позволит вашему сценарию бездействовать в течение 10 секунд и дать вашей системе отдохнуть.В противном случае ваш процессор будет запускать этот скрипт миллион раз в секунду, и это определенно загрузит ваш процессор.

Чтобы уничтожить его, просто перейдите в диспетчер задач и убейте wscript.exe, или, если он не найден, вы найдете cscript.Отлично, убей его нажатием кнопки удаления.Они будут присутствовать на вкладке процесса вашего диспетчера задач.

Как только вы добавите эту строку в код, я не думаю, что вам нужно будет убить этот процесс.Он не будет загружать ваш процессор.

Хорошего дня.

1 голос
/ 19 июня 2015

Запустите диспетчер задач, щелкните вкладку «Процессы», щелкните правой кнопкой мыши файл wscript.exe, выберите «Завершить процесс» и подтвердите в следующем диалоговом окне.Это завершит работу wscript.exe, который выполняет ваш скрипт.

0 голосов
/ 16 октября 2017

Создайте файл Name.bat со следующей строкой.

taskkill /F /IM wscript.exe /T

Убедитесь, что ваш процессор не перегружен. Если вы запускаете длинные скрипты, скорость вашего процессора меняется, и строки скриптов переопределяют друг друга.

...