2011-07-15 4 views
10

Команда пуска может запустить приложение, например, блокнотом в пакетном файле, как это:Закрыть запущенное приложение из командной строки DOS

start notepad 
start "my love.mp3" 

Но как я закрыть работающее приложение из командной строки? Я нашел taskkill в моих поисковых запросах, но я не думаю, что это правильная команда, потому что она не работает — в ней нет такого файла.

Как закрыть приложение, запущенное с помощью start?

+0

Niko какая версия Windows вы используете? – ErikE

ответ

4

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, а затем найти обработчик оттуда.

A более общее решение, которое берет имя файла, который вы начали, и вычисляет расширение из него, теоретически возможно, но намного сложнее. В случае notepad вам нужно выяснить, что это такое, путем поиска пути для всех исполняемых файлов, и т. д.

Это может быть проще, если вы создали чрезвычайно короткий mp3-файл, который вы могли бы запустить. ding в программе, он может перестать воспроизводить текущий файл и переключиться на новый, что почти мгновенно прекратит и прекратит воспроизведение.

+0

Спасибо. Но как узнать, Можете ли вы дать мне какой-нибудь примерный пакетный файл, который выполняет операцию? – niko

+0

, пожалуйста, дайте мне знать, как убить приложение, скажем, блокнот, используя taskkill. Как найти зарегистрированного обработчика? Любая команда для этого – niko

+0

@Niko см. Правки – ErikE

16

Введите taskkill /? для синтаксиса и некоторых примеров. То, что вы хотите сделать, это передать аргумент /IM, используя имя программы, которую вы хотите убить. Например:

TASKKILL /F /IM notepad.exe 

убьет notepad.exe.

TASKKILL /F /IM note* 

убьет все процессы, начинающиеся с «примечания».

 Смежные вопросы

  • Нет связанных вопросов^_^