Alright, Not going to lie. I saw this on stackoverflow and thought it was a challenging question. Soooo I just spent the last 2 hours writing some code. And here it is….
After following the steps below, you can type «TaskClose notepad.exe» after hitting «Start» and it will auto save all undocumented notepad files into desktop. It will auto-close chrome.exe and save the restoration settings.
You can add and remove additional settings for other applications under the if conditions. For instance:
If InStr(SINGLECLOSEAPPS, WScript.arguments(0)) Then
SmartSendKeys strOutput,"bypass","%{F4}"
ElseIf InStr(AUTOCLOSEAPPS, WScript.arguments(0)) Then
SmartSendKeys strOutput,"","%{F4}|%s|{autoname}.txt|%s"
'Example 1: =============================================
ElseIf InStr(WScript.arguments(0), "outlook") Then
SmartSendKeys strOutput,"","%{F4}" 'Activate Alt+4
'========================================================
'Example 2: =============================================
ElseIf InStr(WScript.arguments(0), "notepad") Then 'I know, already in my autoapps
SmartSendKeys strOutput,"","%{F4}|%s|{autosave}.txt" 'Activate Alt+4 + Save File + {AutoSave} = autoincrement filename
'========================================================
Else
SmartSendKeys strOutput,"bypass","%{F4}"
End If
The vbs and batch files performs the following procedures:
- Collects the executable.
- Queries the executable application names off
of the tasklist. - Performs an «Alt+TAB(x)» procedure until it has
verified the window is open. - Then Executes the rolling commands whether it be «Alt+F4» or even in extreme cases
- Alt+F4
- Activate Save
- AutoIncrememnt Filename
- Exit application.
ReturnAppList.bat : install in «C:\windows\system32\»
for /f "tokens=10 delims=," %%F in ('tasklist /v /fi "imagename eq %1" /fo csv') do @echo %%~F >>result.txt
TaskClose.bat : install in «C:\windows\system32\» AND «C:\Users\YourUserName\»
C:\windows\system32\wscript.exe c:\windows\system32\taskclose.vbs %1
TaskClose.vbs : install in «C:\windows\system32\»
Set WshShell = CreateObject("WScript.Shell")
Const SINGLECLOSEAPPS = "chrome.exe|iexplore.exe|firefox.exe"
Dim DEFAULTSAVELOCATION : DEFAULTSAVELOCATION = wshshell.SpecialFolders("Desktop")
Const AUTOCLOSEAPPS = "notepad.exe"
Const WshFinished = 1
Const WshFailed = 2
strCommand = "returnapplist.bat "
Set WshShellExec = WshShell.Exec(strCommand & WScript.Arguments(0))
WScript.sleep 2000
Select Case WshShellExec.Status
Case WshFinished
strOutput = LoadStringFromFile("result.txt")
Case WshFailed
strOutput = LoadStringFromFile("result.txt")
End Select
'SmartSendKeys(application_name_array, bypassclause, additionalcommands)
'========================
If InStr(SINGLECLOSEAPPS, WScript.arguments(0)) Then
SmartSendKeys strOutput,"bypass","%{F4}"
ElseIf InStr(AUTOCLOSEAPPS, WScript.arguments(0)) Then
SmartSendKeys strOutput,"","%{F4}|%s|{autoname}.txt|%s"
Else
SmartSendKeys strOutput,"bypass","%{F4}"
End If
'SmartSendKeys(application_name_array, bypassclause, additionalcommands)
'========================
Function SmartSendkeys(fArr, LoopCount, RollCommands)
Dim x
Dim splt : splt = Split(farr, vbCrLf)
If loopcount = "bypass" Then
x = 0
Else
x = UBound(splt)
End If
a = 0
For s=0 To x
If Len(splt(s)) > 1 Then
Set objShell = WScript.CreateObject("WScript.Shell")
c = 1 : tabs = ""
Success = False
Do Until Success = True
Success = objShell.AppActivate(Trim(splt(s)))
If success <> True Then
If c = 1 Then
tabs = "{TAB}"
Else
tabs = "{TAB " & c & "}"
End If
'wscript.echo "Activating: " & "%" & tabs
WshShell.SendKeys "%" & tabs
WScript.Sleep 5000
c = c + 1
If c = 100 Then
WScript.echo "App not found"
Exit Function
End If
End If
Loop
Dim cmds : cmds = Split(rollcommands, "|")
For Each cm In cmds
If InStr(cm, "{autoname}") Then
Dim file_ext : file_ext = Split(cm, ".")
cm = DEFAULTSAVELOCATION & "autosave" & a & "." & file_ext(1)
a = a + 1
End If
WshShell.SendKeys cm
WScript.sleep 500
Next
End If
Next
End Function
Function LoadStringFromFile(filename)
Const fsoForReading = 1
Const fsoForWriting = 2
Dim fso, f
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile(filename, fsoForReading)
Dim fulltext : fulltext = f.ReadAll
LoadStringFromFile = fulltext
f.Close
fso.DeleteFile(filename)
End Function
This was alot of fun to write and I’m more happy about finishing it than actually showing the answer. Have a great week!
Every time I turn on my company-owned development machine, I have to kill 10+ processes using the Task Manager or any other process management app just to get decent performance out of my IDE. Yes, these are processes from programs that my company installs on my machine for security and compliance. What I’d like to do is have a .bat file or script of some kind with which I can kill the processes in question.
Does anybody know how to do this?
bubbleking
3,3293 gold badges30 silver badges49 bronze badges
asked Aug 29, 2008 at 2:09
2
You can do this with ‘taskkill‘.
With the /IM parameter, you can specify image names.
Example:
taskkill /im somecorporateprocess.exe
You can also do this to ‘force‘ kill:
Example:
taskkill /f /im somecorporateprocess.exe
Just add one line per process you want to kill, save it as a .bat file, and add in your startup directory. Problem solved!
If this is a legacy system, PsKill will do the same.
answered Aug 29, 2008 at 2:14
Factor MysticFactor Mystic
26.3k16 gold badges79 silver badges95 bronze badges
2
taskkill /f /im "devenv.exe"
this will forcibly kill the pid with the exe name «devenv.exe»
equivalent to -9 on the nix’y kill command
answered Aug 29, 2008 at 2:13
DevelopingChrisDevelopingChris
39.9k30 gold badges87 silver badges118 bronze badges
2
As TASKKILL might be unavailable on some Home/basic editions of windows here some alternatives:
TSKILL processName
or
TSKILL PID
Have on mind that processName
should not have the .exe
suffix and is limited to 18 characters.
Another option is WMIC
:
wmic Path win32_process Where "Caption Like 'MyProcess%.exe'" Call Terminate
wmic offer even more flexibility than taskkill with its SQL-like matchers .With wmic Path win32_process get
you can see the available fileds you can filter (and %
can be used as a wildcard).
answered Feb 2, 2015 at 8:22
npocmakanpocmaka
55.6k18 gold badges148 silver badges188 bronze badges
I’m assuming as a developer, you have some degree of administrative control over your machine. If so, from the command line, run msconfig.exe. You can remove many processes from even starting, thereby eliminating the need to kill them with the above mentioned solutions.
answered Aug 29, 2008 at 3:18
Jason ZJason Z
13.1k15 gold badges50 silver badges62 bronze badges
Get Autoruns from Mark Russinovich, the Sysinternals guy that discovered the Sony Rootkit… Best software I’ve ever used for cleaning up things that get started automatically.
answered Aug 29, 2008 at 3:45
Brian StewartBrian Stewart
9,16711 gold badges54 silver badges66 bronze badges
Download PSKill. Write a batch file that calls it for each process you want dead, passing in the name of the process for each.
answered Aug 29, 2008 at 2:12
Shog9Shog9
157k35 gold badges231 silver badges235 bronze badges
Use Powershell! Built in cmdlets for managing processes. Examples here (hard way), here(built in) and here (more).
answered Aug 29, 2008 at 2:33
slipsecslipsec
3,0043 gold badges34 silver badges46 bronze badges
Please find the below logic where it works on the condition.
If we simply call taskkill /im applicationname.exe
, it will kill only if this process is running. If this process is not running, it will throw an error.
So as to check before takskill
is called, a check can be done to make sure execute taskkill
will be executed only if the process is running, so that it won’t throw error.
tasklist /fi "imagename eq applicationname.exe" |find ":" > nul
if errorlevel 1 taskkill /f /im "applicationname.exe"
answered Oct 26, 2016 at 12:32
2
Here I wrote an example command that you can paste in your cmd
command line prompt and is written for chrome.exe
.
FOR /F "tokens=2 delims= " %P IN ('tasklist /FO Table /M "chrome*" /NH') DO (TASKKILL /PID %P)
The for just takes all the PID
s listed on the below tasklist
command and executes TASKKILL /PID
on every PID
tasklist /FO Table /M "chrome*" /NH
If you use the for in a batch file just use %%P instead of %P
answered Feb 12, 2018 at 21:58
Eduard FlorinescuEduard Florinescu
16.8k28 gold badges113 silver badges179 bronze badges
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
1 2013-10-27 17:03:48 (изменено: fam888, 2013-10-27 17:10:00)
- fam888
- Участник
- Неактивен
- Рейтинг : [0|0]
Тема: AHK: нужна простая команда на закрытие приложения
Предположим есть скрипт:
Run C:\Documents and Settings\Admin\Рабочий стол\1.ahk,
который запускает программу. Мне же нужен скрипт , который эту же программу закроет. Или, так же будет хорошо, если команда на закрытие этой программы будет внутри одного скрипта(при помощи горячей клавиши или другого условия). Подскажите как это сделать. Есть догадка, что необходимо конвертировать программу из ahk в exe и использовать, например, ExitApp, но пробовать не стал, поскольку не понимаю в чем разница.
2 Ответ от Indomito 2013-10-27 18:57:37 (изменено: Indomito, 2013-10-27 19:10:01)
- Indomito
- Участник
- Неактивен
Re: AHK: нужна простая команда на закрытие приложения
Я не очень понял что надо закрывать, то ли твой скрипт, то ли внешнее приложение.
Если свой же скрипт, то вот простой код:
Теперь закрытие внешнего приложения, тут немного сложнее, но не намного.
;==========Закрыть активное окно
CloseActiveWin:
WinGetActiveTitle, Title
if (fnWinClose(Title))
return true
return false
;==========Завершаем процесс с именем Name.exe без активного окна
lEndTask:
DetectHiddenWindows, On
vWin := "Name.exe"
SetTitleMatchMode, 2
IfWinExist, %vWin%
{
vTxt := "Завершаем процесс Name.exe"
GuiControl,, Msg, % vTxt
Sleep, 1000
WinClose
;Process, Close, %vWin%
sleep 1500 ; Чуть подождём = 1,5 сек
return true
}
return false
;==========Функция закрытие окна приложения, если оно существует
fnWinClose(vWin)
{
SetTitleMatchMode, 2
IfWinExist, %vWin%
{
WinClose
;WinKill
return true
}
return false
}
Компилировать не нужно, т.е. необязательно, хотя разница есть, но не очень заметная… так скажем кое что нельзя выполнить из не компилированной программы/скрипта.
«На каждое действие есть равная ему противодействующая критика.» Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 — November 24, 2019 Click to Download
3 Ответ от fam888 2013-10-27 19:56:26 (изменено: fam888, 2013-10-27 20:05:43)
- fam888
- Участник
- Неактивен
- Рейтинг : [0|0]
Re: AHK: нужна простая команда на закрытие приложения
Скорее закрыть нужно скрипт, но дело в том, что в моем скрипте присутствует цикл, в который необходимо как то внедрить горячую клавишу на закрытие всего скрипта, выглядит он так:
~XButton1::
#MaxThreadsPerHotkey
Process, Priority, , High
loop
{
PixelSearch, Px, Py, 1198, 946, 1199, 947, 0x80ff00, 0, fast
if ErrorLevel
sendinput {}
Else
sendinput {WheelDown}
}
кстати спасибо за другие варианты, они мне очень пригодятся тоже.
4 Ответ от Indomito 2013-10-27 20:31:31 (изменено: Indomito, 2013-10-27 20:40:39)
- Indomito
- Участник
- Неактивен
Re: AHK: нужна простая команда на закрытие приложения
Самое простое это добавить таймер с проверкой нужной клавиши, ну например такой.
SetTimer, lTimerKeyCloseApp, 120
return
lTimerKeyCloseApp:
iTmp:=7
while (!(GetKeyState("F1", "P")) && iTmp)
{
sleep 5
iTmp--
}
if (iTmp)
{
SetTimer, lTimerKeyCloseApp, Off
ExitApp
}
return
вроде как то так.
«На каждое действие есть равная ему противодействующая критика.» Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 — November 24, 2019 Click to Download
5 Ответ от fam888 2013-10-27 20:48:59
- fam888
- Участник
- Неактивен
- Рейтинг : [0|0]
Re: AHK: нужна простая команда на закрытие приложения
Большое спасибо, попробую.
6 Ответ от Indomito 2013-10-27 20:56:39
- Indomito
- Участник
- Неактивен
Re: AHK: нужна простая команда на закрытие приложения
Можно чуть сделать короче, но не уверен что будет работать корректно:
SetTimer, lTimerKeyCloseApp, 120
return
lTimerKeyCloseApp:
iTmp:=7
while (!(GetKeyState("F1", "P")) && (--iTmp))
sleep 5
if (iTmp)
{
SetTimer, lTimerKeyCloseApp, Off ; это не обязательно
ExitApp
}
return
«На каждое действие есть равная ему противодействующая критика.» Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 — November 24, 2019 Click to Download
7 Ответ от serzh82saratov 2013-10-27 21:07:54
- serzh82saratov
- Разработчик
- Неактивен
Re: AHK: нужна простая команда на закрытие приложения
fam888
Если разговор про то чтобы после нажатия кнопки для закрытия скрипта, сначала закончилась итеррация цикла, то:
loop
{
MsgBox,,, Начало итерации, 1
MsgBox,,, Конец итерации, 1
} Until Exit
MsgBox,,, The End, 0.7
ExitApp
2:: Exit := 1
Если надо закрывать по кнопке только во время цикла, то:
Label:
loop = 1
loop 10
{
MsgBox,, % 10 - A_Index, Нажимай, 0.3
}
loop = 0
MsgBox Не успел. Попробуй ещё.
GoTo, Label
#If loop
2:: ExitApp
#If
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui
8 Ответ от borro 2016-12-14 16:03:17
- borro
- Участник
- Неактивен
- Рейтинг : [0|0]
Re: AHK: нужна простая команда на закрытие приложения
Здравствуйте!
Написал и откпомпилировал по примеру выше такой скрипт, чтобы закрыть скайп на моем Win 8.1
; Shutting down the process with the name Skype.exe which is not having active window
lEndTask:
DetectHiddenWindows, On
vWin := "Skype.exe"
SetTitleMatchMode, 2
IfWinExist, %vWin%
{
vTxt := "Shutting down Skype.exe"
GuiControl,, Msg, % vTxt
Sleep, 1000
WinClose
;Process, Close, %vWin%
Sleep 4000
return true
}
return false
; Shutting down the application window if it exists
fnWinClose(vWin)
{
SetTitleMatchMode, 2
IfWinExist, %vWin%
{
WinClose
;WinKill
return true
}
return false
}
почему-то после запуска скайп не закрывается. Скажите, пожалуйста, почему
9 Ответ от teadrinker 2016-12-14 20:29:03
- teadrinker
- Администратор
- Неактивен
Re: AHK: нужна простая команда на закрытие приложения
Может, потому что точки в конце предложений забываете ставить?
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Если вы тот, кто работает над определенным набором приложений каждый раз, когда вы сидите перед своим компьютер, вы можете открыть их вместе одним щелчком мыши при входе в систему на своем компьютере. ежедневно. У нас уже есть статья, в которой подробно рассказывается, как можно сэкономить время, открывая все приложения вместе с помощью простого пакетного сценария..
Точно так же, как вы можете пакетно открывать приложения, вы также можете пакетно закрывать приложения. Для этого нам нужно написать простой пакетный скрипт, который не требует знаний программирования. Читайте дальше, чтобы узнать, как легко закрыть несколько программ за один раз.
Читайте также: Как мгновенно закрыть все окна и вкладки Google Chrome за один раз
Оглавление
Раздел 1: Как создать и выполнить пакетный скрипт для одновременного закрытия нескольких программ
Шаг 1: Перейти к Рабочий стол мгновенно, нажав кнопку ВЫИГРЫШ + Д ключи вместе.
Оказавшись на рабочем столе, щелкните правой кнопкой мыши на пустое место, нажмите на Новый а затем нажмите на Текстовый документ.
Шаг 2: Теперь Двойной клик на только что созданном текстовом документе, чтобы открыть его.
Шаг 3: Как и далее, в текстовом документе скопировать и вставить следующую команду.
тасккилл /F /IM /T > ноль
Обратите внимание, что вы должны заменить с Имя изображения приложения, которое вы хотите закрыть. Вы можете обратиться к Раздел 3: Как найти имя образа процесса/приложения, которое нужно закрыть, если вы не знаете Имя изображения процесса, который вы хотите убить.
Параметры команды поясняются ниже:
РЕКЛАМА
тасккилл – Убить процесс или приложение.
/Ф – Для принудительного завершения запущенного процесса.
/IM — Обозначает имя изображения. /IM следует за процессом Имя изображения. Если вы не знаете Имя изображения процесса, который вы хотите убить, см. Раздел 3: Как найти имя образа процесса/приложения, которое нужно закрыть.
/Т – Завершить все дочерние процессы.
ноль – Чтобы подавить ошибки и сообщения.
Вы можете добавить столько строк, сколько хотите. Каждая строка будет соответствовать одному приложению или программе.
Наконец, в конце напишите @Пауза. Это для вас, чтобы увидеть результаты выполнения вашей команды. Например, если программу не удалось закрыть, вы сможете увидеть причину, по которой ее не удалось закрыть, на экране CMD. В противном случае экран CMD мгновенно закроется.
Ниже показан пример сценария, в котором мы закрываем программы Блокнот, Калькулятор и WPS-офис с помощью нашего пакетного сценария.
taskkill /F /IM Notepad.exe /T > ноль. taskkill /F /IM CalculatorApp.exe /T > ноль. taskkill /F /IM wps.exe /T > nul @pause
Когда все будет готово, не забудьте одновременно нажать клавиши CTRL + S, чтобы сохранить файл.
Шаг 4: Теперь вернитесь на рабочий стол, нажмите на файл и нажмите F2 ключ к переименовать файл.
Шаг 5: Вы можете дать любое имя к вашему файлу, мы назвали его как Закрыть несколько программ. Какое бы имя вы ни дали, убедитесь, что вы дали расширение файла как летучая мышь после . (точка). Это самая важная часть.
Шаг 6: после того, как вы ввели имя, щелкните где-нибудь еще на экране. Теперь вы получите следующее Переименовать окно подтверждения. нажмите Да кнопку для подтверждения.
Шаг 7: Вот и все. Теперь ваш пакетный файл сценария готов. Двойной клик на нем, чтобы выполнить его.
Шаг 8: теперь ваш пакетный скрипт закрыть все программы указано в нем.
Кроме того, вы сможете увидеть, какие программы были закрыты на Командная строка экран. Это потому что ты поставил @Пауза в конце вашего скрипта. Это приостанавливает экран и ждет нажатия клавиши, прежде чем закрыть экран командной строки.
Раздел 2: Как добавить дополнительные программы в существующий пакетный сценарий
Если вы хотите добавить больше программ в список программ, которые вы хотите закрыть в пакетном файле, вы вполне можете это сделать.
Шаг 1: Щелкните правой кнопкой мыши на командный файл вы создали и нажмите на Показать больше вариантов.
Шаг 2: В раскрывающемся меню щелкните значок Редактировать вариант.
Шаг 3: теперь пакетный скрипт будет открываться в Блокнот, где вы можете вносить изменения, как обычно.
В приведенном ниже примере мы добавили еще одну строку в наш скрипт. На этот раз мы стремимся убить MS Paint также.
Раздел 3: Как найти имя образа процесса/приложения, которое нужно закрыть
Этот раздел больше похож на приложение, которое поможет вам найти Имя изображения приложения или процесса.
Чтобы убить приложение, вам нужно либо его Имя изображения или его идентификатор процесса. Для некоторых приложений Имя изображения может быть простым, но для некоторых других приложений об этом нельзя сразу догадаться. В таких случаях вы можете выполнить следующие шаги, чтобы легко узнать Имя изображения процесса, который вы хотите убить.
Шаг 1: На панели задач, расположенной в нижней строке экрана Windows, щелкните значок объектив икона.
Шаг 2: на панели поиска поиск командной строки и нажмите на Запустить от имени администратора возможность открыть командную строку в повышенном режиме.
Шаг 3: Когда открывается командная строка, скопировать и вставить или тип в следующей команде, чтобы вывести список всех запущенных процессов на вашем компьютере.
список заданий
Когда у вас есть список, под столбцом Имя изображения, вы можете прокрутить и узнать имя процесса/приложения, которое вы хотите убить. И вы можете использовать это Имя изображения в тасккилл команда.
Вот и все. Надеюсь, теперь вы сэкономите много времени, используя этот крутой трюк.
Пожалуйста, сообщите нам в разделе комментариев, нашли ли вы статью полезной. Кроме того, если вы застряли на каком-либо из шагов, сообщите нам, мы будем рады помочь.
Вы также можете загрузить этот инструмент для ремонта ПК, чтобы найти и устранить любую проблему с ПК:
Шаг 1 — Скачайте Restoro PC Repair Tool отсюда
Шаг 2. Нажмите «Начать сканирование», чтобы автоматически найти и устранить любую проблему с ПК.
Перейти к содержанию
На чтение 1 мин Просмотров 2.9к. Опубликовано
Обновлено
Очень раздражает, что выйти из скайпа сейчас в венде невозможно.. Закрываешь его, закрываешь, а он просто сворачивается!
Единственный способ завершить процесс.
Делать это через диспеччер задач каждый раз не удобно, поэтому решил создать батник.
За сим:
Чтобы завершить приложение при помощи bat файла, необходимо выполнить такую команду в нем:
taskkill /im процесс.exe
В моём случае так:
taskkill /im Skype.exe
Создал файл с расширением bat на рабочем столе и убиваю любимую-испорченную мелкомягкими программу.
Похожий код:
Программист, разработчик с 5 летним опытом работы. Учусь на разработчика игр на Unity и разработчика VR&AR реальности (виртуальной реальности). Основные языки программирования: C#, C++.