Закрыть запущенное приложение из командной строки DOS
команда пуск может запустить приложение, как блокнот в пакетном файле, как это:
start notepad
start "my love.mp3"
но как закрыть запущенное приложение из командной строки? Я нашел taskkill
в моих поисках, но я не думаю, что это правильная команда, потому что она не работает-она говорит нет такого файла.
как закрыть приложение, запущенное с помощью start
?
2 ответов
Taskkill правильно. Но вы должны убить процесс воспроизведения файла, а не сам файл. Выяснить, зарегистрированный обработчик для MP3-файлов из командной строки будет немного сложнее.
если вы знаете, то вы можете убить этот процесс.
вот сценарий, который выясняет зарегистрированное приложение для mp3-файлов и убивает задачу:
@echo off
if not .%1==. goto show
:createtemp
set tempfile="%temp%\temp-%random%-%time:~6,5%.bat"
if exist %tempfile% goto :createtemp
reg query HKEY_CLASSES_ROOT\mp3file\shell\play\command\ > %tempfile%
for /F "skip=4 delims=> tokens=2 usebackq" %%e in (`type %tempfile%`) do call %0 %%e
del %tempfile% > nul
set tempfile=
set handler=
set teststring=
set offset=
set cmd=
goto end
:show
set handler=%2
set handler=%handler:~1,-1%
set /A offset=-1
:loop
set cmd=set teststring=%%handler:~%offset%%%
echo %cmd% > %tempfile%
call %tempfile%
if %teststring:~0,1%==\ goto complete
set /A offset=offset-1
goto loop
:complete
set /A offset=offset+1
set cmd=set handler=%%handler:~%offset%%%
echo %cmd% > %tempfile%
call %tempfile%
taskkill /IM %handler% > nul
:end
если вы сохраните его как killmp3.bat
или что-то, вы можете назвать это, когда захотите. Конечно, имейте в виду, что если программа уже работала, делала что-то еще, что она все равно будет закрыта.
обратите внимание, что это сильно зависит от записи в реестре есть путь к исполняемому файлу в двойные кавычки. Если у вас этого нет, и в имени исполняемого файла есть пробелы, это приведет к сбою.
вы можете обобщить мою технику, чтобы иметь возможность передавать расширение файла (например,.mp3
, который вы можете посмотреть в реестре найти имя класса mp3file
и потом найти обработчик оттуда.
более общее решение, которое принимает имя файла, который вы начали, и вычисляет расширение из него теоретически возможно, но намного сложнее. В случае notepad
вы должны выяснить, что это поиск пути для всех исполняемых файлов и т. д.
Это может быть проще, если вы создали очень короткий mp3-файл, который вы могли бы начать. В зависимости от программы он может прекратить воспроизведение текущего файла и переключиться на новый один, который закончится почти мгновенно и эффективно остановить воспроизведение.
Enter taskkill /?
для синтаксиса и некоторых примеров. Что вы хотите сделать, это передать /IM
аргумент, используя имя программы, которую вы хотите убить. Например:
TASKKILL /F /IM notepad.exe
убью Блокнот.исполняемый.
TASKKILL /F /IM note*
убьет все процессы, начинающиеся с "Примечание".