Как да използваш PowerShell скриптове за принудително затваряне на замръзнали програми

Как да затвориш блокирано приложение в Windows с PowerShell/taskkill скриптове

Понякога програмите в Windows спират да работят, екранът замръзва и дори класическият Task Manager (Диспечер на задачите) не може да помогне веднага. В такива моменти можеш да използваш PowerShell скрипт за затваряне по принудителен начин на блокирани програми. Това е бърз и надежден начин да възвърнеш контрола над компютъра си, без да се налага да го рестартираш.

Как да използваш PowerShell скрипт за затваряне на замръзнали програми
Как да използваш PowerShell скрипт за затваряне на замръзнали програми

Основната команда: Stop-Process

В основата на всеки скрипт за спиране на програми стои една главна команда – Stop-Process. Тя казва на Windows незабавно да прекрати работата на дадено приложение. Използването ѝ е много по-директно от цъкането с мишката.

PowerShell скрипт за затваряне на замръзнали програми – видове

Затваряне на програма по нейното име

В PowerShell използвай Stop-Process -Name име -Force (без .exe). Можеш да комбинираш с Get-Process, за да провериш дали процесът съществува, преди да го затвориш.

Основна команда:

PowerShell

Stop-Process -Name notepad -Force
Затваряне на програма чрез PowerShell по нейното име
Затваряне на програма чрез PowerShell по нейното име

Добавянето на параметъра -Force накрая е ключово. То гарантира, че програмата ще бъде затворена принудително и веднага, дори ако се опитва да изкара прозорец с въпрос дали искаш да запазиш промените си.

Спиране чрез уникален номер (PID)

Всяка отворена програма получава свой уникален номер от системата, наречен PID (Process ID). Това е изключително полезно, ако имаш отворени пет прозореца на една и съща програма (например текстов редактор), но искаш да затвориш само един конкретен, който е блокирал.

Първо трябва да намериш номера на програмата:

PowerShell

Get-Process -Name "notepad"

Списъкът ще ти покаже всички отворени прозорци и техните номера в колонката Id. След като видиш номера (например 1234), можеш да го затвориш директно:

PowerShell

Stop-Process -Id 1234 -Force

Затваряне на няколко приложения наведнъж:

"notepad", "mspaint", "CalculatorApp" | ForEach-Object {
Get-Process -Name $_ -ErrorAction SilentlyContinue | Stop-Process -Force
}

По-кратък вариант (без цикъл)

Командата Get-Process приема списък от имена директно, така че можеш да напишеш същото и на един ред.

Get-Process -Name "notepad", "mspaint", "calc", "CalculatorApp" -ErrorAction SilentlyContinue | Stop-Process -Force

Автоматизиран скрипт за неотговарящи програми

Ако искаш готово решение, което автоматично намира всички забили програми и ги затваря наведнъж, можеш да използваш този кратък скрипт.

Забележка: В Windows има системни и фонови процеси без графичен интерфейс. Понякога свойството им Responding се отчита като $false по подразбиране, въпреки че те работят нормално и не са забили.
Филтриране само по програми с прозорец: Препоръчително е да добавиш проверка за наличието на заглавие на прозореца (MainWindowTitle). Така скриптът ще затваря само видими програми, които наистина са забили, и няма да докосва фонови процеси.

PowerShell:

# Намира само видими програми с прозорец, които не отговарят
$notResponding = Get-Process | Where-Object { $_.MainWindowTitle -ne "" -and $_.Responding -eq $false }

# Затваря ги принудително, ако има такива
if ($notResponding) {
    $notResponding | Stop-Process -Force
    Write-Host "Всички забили програми са затворени успешно."
} else {
    Write-Host "Няма блокирали програми в момента."
}
Автоматизиран PowerShell скрипт за затваряне на програми, които са замръзнали
Автоматизиран PowerShell скрипт за затваряне на програми, които са замръзнали

Този код е много удобен, защото премахва нуждата да търсиш ръчно кое точно приложение създава проблем. Системата сама проверява кое работи и кое е замръзнало.

Най-лесно е да запазиш скрипта като .ps1 файл (скрипт за Windows PowerShell) и да му направиш пряк път (Shortcut) на работния плот. Така ще го пускаш с двоен клик без да отваряш конзолата ръчно всеки път.

Стъпка 1: Запазване на скрипта като файл

  • Отвори Notepad: Натисни бутона Start, напиши Notepad и го отвори.
  • Постави кода: Копирай безопасния код по-горе и го постави в текстовия файл. Както виждаш накрая е добавено Start-Sleep -Seconds 3, за да имаш време да прочетеш съобщението, преди прозорецът да се затвори.
$notResponding = Get-Process | Where-Object { $_.MainWindowTitle -ne "" -and $_.Responding -eq $false }

if ($notResponding) {
    $notResponding | Stop-Process -Force
    Write-Host "Всички забили програми са затворени успешно."
} else {
    Write-Host "Няма блокирали програми в момента."
}

Start-Sleep -Seconds 3
  • Запиши файла: Натисни Ctrl + S и избери лесно място, например папка C:\Scripts.
  • Задай правилното разширение: В полето File name напиши KillFrozen.ps1. В падащото меню Save as type задължително избери All Files (*.*) и натисни Save.
Запазване на скрипта като файл
Запазване на скрипта като файл

Стъпка 2: Създаване на бутон за стартиране с един клик

Windows по подразбиране отваря .ps1 файловете за редактиране, вместо да ги изпълнява. Затова трябва да създадеш специален пряк път.

  • Създай пряк път: Кликни с десен бутон на празно място на работния плот (Desktop), избери New и после Shortcut.
  • Въведи командата: В полето за местоположение постави следния ред (ако си запазил файла на друго място, смени пътя в кавичките).
powershell.exe -ExecutionPolicy Bypass -File "C:\Scripts\KillFrozen.ps1"
  • Завърши настройката: Натисни Next, дай име на прекия път (например Затвори забили програми) и натисни Finish.
Създаване на бутон за стартиране с един клик
Създаване на бутон за стартиране с един клик

Важна бележка за администраторски права:

Някои програми се стартират като администратор и обикновен скрипт не може да ги затвори.

  • Настройка за администратор: Кликни с десен бутон върху новия пряк път на десктопа и избери Properties.
  • Активиране: Натисни бутона Advanced…, сложи отметка на Run as administrator и потвърди с OK.

Настройване на клавишна комбинация

Можеш да настроиш и клавишната комбинация, и иконката директно от настройките на прекия път. Така ще имаш бърз достъп от клавиатурата и лесно разпознаваем бутон на работния плот.

Стъпка 1: Отваряне на настройките

  • Отвори свойствата: Кликни с десен бутон върху новия пряк път на работния плот и избери Properties (Свойства). Увери се, че си в раздел Shortcut (Пряк път).

Стъпка 2: Задаване на клавишна комбинация

  • Избери полето: Кликни в полето Shortcut key (Клавиш за бърз достъп), където в момента пише None.
  • Натисни клавиш: Натисни желаната буква или цифра на клавиатурата, например K. Windows автоматично ще добави Ctrl + Alt + K.
  • Важно условие: Клавишната комбинация работи само ако прекият път остане на работния плот (Desktop) или в менюто Start.

Стъпка 3: Смяна на иконката

  • Отвори списъка с икони: В същия прозорец натисни бутона Change Icon… (Смяна на икона) в долната част. Ако се появи предупреждение, просто натисни OK.
  • Избери визия: Ще видиш списък със стандартни икони на Windows (например червен кръст за спиране или светкавица). Избери тази, която ти харесва най-много, и натисни OK.
  • Запази промените: Натисни Apply и след това OK, за да затвориш прозореца.
Задаване на клавишна комбинация и смяна на иконката
Задаване на клавишна комбинация и смяна на иконката

Съвет при използване

Когато натиснеш Ctrl + Alt + K и си активирал администраторски права, на екрана ще се появи стандартният прозорец на Windows за потвърждение (UAC – Контрол на потребителските акаунти), след което скриптът ще се изпълни веднага.

Готов .bat скрипт за бързо затваряне на замръзнали приложения

Запази следния код като .bat файл. С двойно кликване той принудително затваря всички процеси, които Windows отчита като „Not Responding“.

Създай текстов файл с име CloseFrozen.bat и постави вътре:

Bat

@echo off
chcp 65001 > nul
echo Затваряне на всички блокирани приложения...
taskkill /F /FI "STATUS eq NOT RESPONDING"
echo Готово.
pause

Можеш да си направиш и по-специфичен скрипт, например само за конкретно приложение:

Bat

@echo off
chcp 65001 > nul
taskkill /IM "Shotcut.exe" /F /T
echo Shotcut е затворен.
pause

Запази файла в Notepad с кодировка UTF-8.

Завършен PowerShell скрипт (KillFrozen.ps1)

Копирай целия код по-долу и го постави в твоя файл C:\Scripts\KillFrozen.ps1.

# Настройка на кодировката, за да се вижда кирилицата правилно
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8

Write-Host "Проверка за блокирали програми..." -ForegroundColor Cyan

# 1. Намира само видими програми с прозорец, които не отговарят
$notResponding = Get-Process | Where-Object { $_.MainWindowTitle -ne "" -and $_.Responding -eq $false }

if ($notResponding) {
    foreach ($proc in $notResponding) {
        Write-Host "Затваряне на забила програма: $($proc.ProcessName) ($($proc.MainWindowTitle))" -ForegroundColor Yellow
        $proc | Stop-Process -Force -ErrorAction SilentlyContinue
    }
    Write-Host "Всички забили програми са затворени успешно." -ForegroundColor Green
} else {
    Write-Host "Няма блокирали програми в момента." -ForegroundColor Green
}

# 2. (По желание) Списък с конкретни програми за принудително затваряне всеки път
# Ако не искаш да затваряш конкретни програми, остави скобите празни: @()
$specificApps = @() # Пример: @("notepad", "mspaint", "CalculatorApp")

if ($specificApps.Count -gt 0) {
    Write-Host "`nПроверка на зададения списък с програми..." -ForegroundColor Cyan
    foreach ($app in $specificApps) {
        $running = Get-Process -Name $app -ErrorAction SilentlyContinue
        if ($running) {
            $running | Stop-Process -Force -ErrorAction SilentlyContinue
            Write-Host "Затворена програма от списъка: $app" -ForegroundColor Yellow
        }
    }
}

Write-Host "`nГотово! Прозорецът ще се затвори след 4 секунди..." -ForegroundColor Gray
Start-Sleep -Seconds 4

Какво прави този подобрен скрипт?

Този вариант е по-умен и информативен от базовия, защото ти дава пълен контрол и обратна връзка:

  • Показва коя програма е забила: Вместо просто да затвори прозорците, скриптът изписва с жълт текст точното име на блокиралата програма, преди да я спре.
  • Чист български текст: Първият ред гарантира, че съобщенията на кирилица ще се четат нормално, без странни символи (увери се само, че при запазване в Notepad настройката Encoding долу вдясно е на UTF-8).
  • Бонус функция – списък за бързо затваряне ($specificApps): Ако има програми или игри, които често ти правят проблеми или искаш да затваряш наведнъж с един клик, можеш да ги добавиш в скобите на ред 21.

Пример: Ако напишеш $specificApps = @("chrome", "discord"), скриптът ще затваря тези две програми всеки път, когато го стартираш, дори и да не са забили. Ако оставиш скобите празни @(), тази функция няма да се използва.

Сравнение на методите за затваряне на замръзнали програми

taskkill е най-универсален и работи навсякъде. PowerShell е по-удобен за скриптове и автоматизация. И двата са принудителни и могат да доведат до загуба на незапазени данни.

МетодКомандаКога е най-удобенИзисква ли админ права?
taskkill по имеtaskkill /IM app.exe /FБързо ръчно затварянеЧесто не
taskkill по PIDtaskkill /PID 1234 /FКогато има много инстанцииЧесто не
Всички Not Respondingtaskkill /F /FI "STATUS eq NOT RESPONDING"Масово чистенеПрепоръчително
PowerShellStop-Process -Name app -ForceСкриптове и автоматизацияПонякога
.bat файлДвойно кликванеПовтарящи се ситуацииЗависи

Виж още: Как да затвориш блокирано приложение в Windows 11 с едно кликване (без Диспечер на задачите)

Важни правила за безопасност

Когато работиш с подобни команди, е добре да имаш предвид няколко основни неща:

  • Внимавай какво затваряш: Избягвай да спираш важни системни процеси (като explorer, svchost или winlogon), защото това може да направи компютъра ти нестабилен.
  • Запазвай работата си редовно: Принудителното затваряне не дава шанс на програмата да запази последните промени. Всичко незапазено до този момент ще бъде безвъзвратно загубено.
  • Осигури си права: За да затвориш някои по-упорити програми, които изискват специален достъп, трябва да отвориш самия PowerShell като администратор (десен клик върху иконата му и избор на „Run as Administrator“).

Използването на PowerShell за управление на твоите приложения ти дава много повече контрол от стандартните менюта. С тези няколко кратки команди можеш лесно да се справяш със замръзнали екрани и да поддържаш системата си бърза и отзивчива.

Често задавани въпроси (FAQ)

Как да намеря точното име на процеса?

Отвори Command Prompt и напиши tasklist или в PowerShell Get-Process. Търси името с .exe.

Мога ли да затворя приложение по заглавие на прозореца?

Директно не. По-добре намери процеса чрез tasklist /V и използвай PID или име.

Кое е по-безопасно – taskkill или Stop-Process?

И двете са принудителни. PowerShell дава повече възможности за проверка преди затваряне, затова е малко по-удобен за скриптове.

Работи ли това, ако Диспечерът на задачите също е блокиран?

Да. Command Prompt или PowerShell често се отварят дори когато графичният интерфейс е силно засегнат.

Ако ви е харесала публикацията, споделете я: