2011-07-15 160 views
10

start命令关闭正在运行的应用程序可以在这样一个批处理文件启动记事本等应用程序:从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,然后从那里找到处理程序。

一传更通用的解决方案,它采用你开始使用的文件的名称,并从中找出扩展名在理论上是可能的,但是要困难得多。在notepad的情况下,你必须找出所有可执行文件的路径,等等

这可能会更简单,如果你创建一个非常短的mp3文件,你可以开始。在播放节目时,它可能会停止播放当前文件并切换到新的文件,这会立即结束并有效地停止播放。

+0

谢谢。但我怎么知道你可以给我任何样本的批处理文件,做这个操作? – niko

+0

请让我知道如何杀死一个应用程序说一个记事本使用taskkill.How我找到一个注册处理程序?任何命令做到这一点 – niko

+0

@妮科见编辑 – ErikE

16

输入taskkill /?的语法和一些示例。你想要做的是通过/IM参数使用你想杀死的程序的名字。例如:

TASKKILL /F /IM notepad.exe 

会杀死notepad.exe。

TASKKILL /F /IM note* 

将终止以“note”开头的所有进程。