Как закрыть приложение через bat
Файл с расширением .bat или .cmd.
Скрипт убивает все процессы с именем nameprocess.exe
Для того чтобы закрыть процессы запущенные от привилегированных пользователей, скрипт должен быть запущен от этого пользователя.
-----------------------------
TASKKILL /F /IM "nameprocess.exe"
------------------------------
Подробное описание команды TASKKILL.
Описание:
Эта команда позволяет завершить один или несколько процессов.
Процесс может быть завершен по имени образа или по идентификатору процесса.
Список параметров:
/S <система> Подключаемый удаленный компьютер.
/U [<домен>\]<пользователь> Пользовательский контекст, в котором
должна выполняться эта команда.
/P <пароль> Пароль для этого пользовательского контекста.
Запрашивает пароль, если он не задан.
/F Принудительное завершение процесса
/FI <фильтр> Отображение задач, отвечающих
указанному в фильтре критерию.
/PID <процесс> Идентификатор процесса, который требуется
завершить.
/IM <образ> Имя образа процесса, который требуется
завершить. Для указания всех процессов
можно использовать символ шаблона '*'.
/T Завершение указанного процесса
и всех его дочерних процессов.
/? Вывод справки по использованию.
Фильтры:
Имя фильтра Допустимые операторы Допустимые значения
----------- -------------------- -------------------
STATUS eq, ne RUNNING | NOT RESPONDING
IMAGENAME eq, ne Имя образа
PID eq, ne, gt, lt, ge, le Значение PID
SESSION eq, ne, gt, lt, ge, le Номер сессии
CPUTIME eq, ne, gt, lt, ge, le Время CPU в формате
hh:mm:ss.
hh - часы,
mm - минуты, ss - секунды
MEMUSAGE eq, ne, gt, lt, ge, le Использование памяти в КБ
USERNAME eq, ne Имя пользователя в формате
[<домен>\]<пользователь>
MODULES eq, ne Имя DLL
SERVICES eq, ne Имя службы
WINDOWTITLE eq, ne Заголовок окна
Примечание: Символ '*' для параметра /IM применим только совместно с фильтрами.
Примечание: Завершение удаленных процессов всегда будет принудительным,
независимо от того, был ли использован параметр /F или нет.
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.
чтобы она закрылась как через крестик, а не TASKKILL » |
Убедитесь, что Блокнот получил уведомление о закрытии своего окна, поскольку вывел запрос о сохранении набранного текста:
Теперь Вы должны понимать, что данная форма команды «taskkill.exe» — без принудительного закрытия (параметра «/f») — работает именно так, как Вы и хотели — «как через крестик».
закрыть (обычным способ, не taskkill) все программы, кроме c:\program.exe. » |
Хочу поднять тему, поскольку нужно то же решение, но требуется немного автоматизации.
taskkill.exe /fi "ImageName eq notepad.exe" действует точно так же как будто мы нажали крестик. И верно - блокнот спрашивает сохранить ли набранный текст.
Вопрос. Как на все вопросы, возникающие при закрытии программы автоматически ответить "Да". В справке по taskkill.exe нет ничего нужного. taskkill /f - не подходит! Почему - ответ ниже.
Для тех кто любит спрашивать "А зачем тебе это надо?" сразу отвечаю. У меня стоит ночное архивирование баз 1с. Если кто то оставил программу не закрытой, то база не архивируется, потому как 1С ставит запрет на использование файлов базы любым другим процессам во время ее работы. При использовании taskkill /f /im 1cv8.exe приложение закрывается. Но запрет на использование файлов базы остается и архиватор не пакует эту базу.
При попытке закрыть программу taskkill.exe /fi 1cv8.exe 1С спрашивает, Вы уверены, что хотите закрыть программу? Вот тут-то и нужно автоматически ответить "Да".
Для тех, кто любит доколупаться.
На вопрос "А если документ поправили и не сохранили. " Ответ - Да, сохраняем! И меня не волнует что там сделали, все равно сохраняем.
Как я понимаю taskkill не то что мне нужно. Кто подскажет как решить проблему и в какую сторону "копать"? Сразу скажу, что я не программист и хреновый администратор, поэтому определениями и жаргоном не засыпать. Подскажите человеческим языком.
Для доступа на рабочую станцию я использую Remote Desktop Connection, но при этом знаю как выполнить закрытие/перезагрузку, как из меню «Пуск».
Используя следующие команды вы можете завершить Windows с помощью bat–файла:
- shutdown -r — перезагрузка
- shutdown -s — закрытие
- shutdown -l — завершение сеанса
- shutdown -t xx — где xx — кол-во секунд ожидания до закрытия/перезагрузки/конца сеанса
- shutdown -i — выдаёт диалоговое окно для указания, какой функцией вы хотите воспользоваться
- shutdown -a — сбрасывает предыдущую команду закрытия Windows. Очень удобно!
- shutdown -h — режим сна. Распространённая ошибка: это не вызов файла справки!
Дополнение
Если вы работаете с удалённого компьютера, бывает полезно добавить опцию -f для принудительной перезагрузки. В противном случае, ваша сессия может завершиться и «упрямое» приложение приведёт к сбою в системе.
Когда мне нужно произвести немедленную перезагрузку, я использую следующее:
Если действовать более мягко, оставляя некоторое время перед перезагрузкой, можно воспользоваться следующей командой:
Как можно понять из комментариев, отсрочка закрытия по умолчанию предполагает -f.
Дополнение 2
Также существует опция -m для удалённого закрытия Windows:
- Параметр -r вызывает перезагрузку (что, как правило, подходит при работе с удалённой машиной, поскольку её физический запуск может оказаться затруднительным).
- Параметр -f вызывает принудительную перезагрузку.
- Естественно, для закрытия системы на удалённой машине вы должны иметь соответствующие права доступа.
Дополнение 3
У вас также есть вся серия " rundll32.exe shell32.dll " (пожалуйста, перед использование посмотрите секцию НО, так как использовать данный подход с большой вероятностью не стоит):
-
rundll32.exe user.exe,**ExitWindows** [Быстрое закрытие Windows]
rundll32.exe user.exe,**ExitWindowsExec** [Перезагрузка Windows]
где n принимает следующие значения:
- 0 - LOGOFF
- 1 - SHUTDOWN
- 2 - REBOOT
- 4 - FORCE
- 8 - POWEROFF
(значения можно комбинировать -> 6 = 2+4 FORCE REBOOT )
НО!
Не используйте для вашей цели rundll32.exe . rundll32.exe ожидает, что функция, передаваемая вами в командной строке, имеет точно заданную сигнатуру метода, которая может не совпадать с сигнатурой метода ExitWindows .
Сигнатура функции, необходимая для функций, вызываемых rundll32.exe такова:
Это не останавливает некоторых от использования rundll32 для вызова произвольных функций, не предназначенных для вызова rundll32, например, user32 LockWorkStation и user32 ExitWindowsEx`.
Вот настоящая сигнатура функции для ExitWindowsEx :
И для полной ясности:
Rundll32 - отголосок прошлого, оставшийся от Windows 95 и устаревший как минимум во времена Windows Vista из-за того, что нарушает множество современных технических принципов.
Для доступа на рабочую станцию я использую Remote Desktop Connection, но при этом знаю как выполнить закрытие/перезагрузку, как из меню «Пуск».
Используя следующие команды вы можете завершить Windows с помощью bat–файла:
- shutdown -r — перезагрузка
- shutdown -s — закрытие
- shutdown -l — завершение сеанса
- shutdown -t xx — где xx — кол-во секунд ожидания до закрытия/перезагрузки/конца сеанса
- shutdown -i — выдаёт диалоговое окно для указания, какой функцией вы хотите воспользоваться
- shutdown -a — сбрасывает предыдущую команду закрытия Windows. Очень удобно!
- shutdown -h — режим сна. Распространённая ошибка: это не вызов файла справки!
Дополнение
Если вы работаете с удалённого компьютера, бывает полезно добавить опцию -f для принудительной перезагрузки. В противном случае, ваша сессия может завершиться и «упрямое» приложение приведёт к сбою в системе.
Когда мне нужно произвести немедленную перезагрузку, я использую следующее:
Если действовать более мягко, оставляя некоторое время перед перезагрузкой, можно воспользоваться следующей командой:
Как можно понять из комментариев, отсрочка закрытия по умолчанию предполагает -f.
Дополнение 2
Также существует опция -m для удалённого закрытия Windows:
- Параметр -r вызывает перезагрузку (что, как правило, подходит при работе с удалённой машиной, поскольку её физический запуск может оказаться затруднительным).
- Параметр -f вызывает принудительную перезагрузку.
- Естественно, для закрытия системы на удалённой машине вы должны иметь соответствующие права доступа.
Дополнение 3
У вас также есть вся серия " rundll32.exe shell32.dll " (пожалуйста, перед использование посмотрите секцию НО, так как использовать данный подход с большой вероятностью не стоит):
-
rundll32.exe user.exe,**ExitWindows** [Быстрое закрытие Windows]
rundll32.exe user.exe,**ExitWindowsExec** [Перезагрузка Windows]
где n принимает следующие значения:
- 0 - LOGOFF
- 1 - SHUTDOWN
- 2 - REBOOT
- 4 - FORCE
- 8 - POWEROFF
(значения можно комбинировать -> 6 = 2+4 FORCE REBOOT )
НО!
Не используйте для вашей цели rundll32.exe . rundll32.exe ожидает, что функция, передаваемая вами в командной строке, имеет точно заданную сигнатуру метода, которая может не совпадать с сигнатурой метода ExitWindows .
Сигнатура функции, необходимая для функций, вызываемых rundll32.exe такова:
Это не останавливает некоторых от использования rundll32 для вызова произвольных функций, не предназначенных для вызова rundll32, например, user32 LockWorkStation и user32 ExitWindowsEx`.
Вот настоящая сигнатура функции для ExitWindowsEx :
И для полной ясности:
Rundll32 - отголосок прошлого, оставшийся от Windows 95 и устаревший как минимум во времена Windows Vista из-за того, что нарушает множество современных технических принципов.
Читайте также: