Mik*_*ynn 119 windows process batch-file kill-process
在Windows中,什么可以查找端口8080并尝试通过.BAT文件终止它正在使用的进程?
Moh*_*ngh 192
打开命令提示符并运行以下命令
C:\Users\username>netstat -o -n -a | findstr 0.0:3000
TCP 0.0.0.0:3000 0.0.0.0:0 LISTENING 3116
C:\Users\username>taskkill /F /PID 3116
Run Code Online (Sandbox Code Playgroud)
,这里3116是进程ID
Mer*_*ham 135
这是一个让你入门的命令:
FOR /F "tokens=4 delims= " %%P IN ('netstat -a -n -o ^| findstr :8080') DO @ECHO TaskKill.exe /PID %%P
Run Code Online (Sandbox Code Playgroud)
如果您对批处理文件有信心,请删除@ECHO
.
FOR /F "tokens=4 delims= " %%P IN ('netstat -a -n -o ^| findstr :8080') DO TaskKill.exe /PID %%P
Run Code Online (Sandbox Code Playgroud)
请注意,对于不同的操作系统,您可能需要稍微更改一下.例如,在Windows 7上,您可能需要tokens=5
代替tokens=4
.
这是如何工作的
FOR /F ... %variable IN ('command') DO otherCommand %variable...
Run Code Online (Sandbox Code Playgroud)
这使您可以执行command
并循环其输出.每条线都会被塞进去,无论你喜欢什么%variable
,都可以随意扩展otherCommand
. %variable
在实际使用中只能有一个单字母的名称,例如%V
.
"tokens=4 delims= "
Run Code Online (Sandbox Code Playgroud)
这允许你按空格分割每一行,并取出该行中的第4个块,并将其填入%variable
(在我们的例子中%%P
). delims
看起来很空,但额外的空间实际上很重要.
netstat -a -n -o
Run Code Online (Sandbox Code Playgroud)
只需运行它就可以找到答案.根据命令行帮助,它"显示所有连接和侦听端口.","以数字形式显示地址和端口号."和"显示与每个连接关联的拥有进程ID".我只是使用这些选项,因为别人建议它,它碰巧工作:)
^|
Run Code Online (Sandbox Code Playgroud)
这将获取第一个命令或程序(netstat
)的输出,并将其传递给第二个命令程序(findstr
).如果您直接在命令行上使用它,而不是在命令字符串中,您将使用|
而不是^|
.
findstr :8080
Run Code Online (Sandbox Code Playgroud)
这会过滤传递给它的任何输出,只返回包含的行:8080
.
TaskKill.exe /PID <value>
Run Code Online (Sandbox Code Playgroud)
这会使用进程ID终止正在运行的任务.
%%P instead of %P
Run Code Online (Sandbox Code Playgroud)
这在批处理文件中是必需的.如果您在命令提示符下执行此操作,则可以使用%P
.
Gir*_*ore 52
要在命令行上查找特定进程,请使用以下命令:8080是进程使用的端口
netstat -ano | findstr 8080
Run Code Online (Sandbox Code Playgroud)
杀死进程使用下面命令21424是进程ID
taskkill /pid 21424 /F
Run Code Online (Sandbox Code Playgroud)
Sol*_*ris 19
使用Merlyn的解决方案导致其他应用程序像firefox一样被杀死.这些进程使用相同的端口,但不是作为监听器:
例如:
netstat -a -n -o | findstr :8085
TCP 0.0.0.0:8085 0.0.0.0:0 LISTENING 6568
TCP 127.0.0.1:49616 127.0.0.1:8085 TIME_WAIT 0
TCP 127.0.0.1:49618 127.0.0.1:8085 TIME_WAIT 0
Run Code Online (Sandbox Code Playgroud)
因此,可以通过向findstr添加"LISTENING"来排除这些,如下所示:
FOR /F "tokens=5 delims= " %%P IN ('netstat -a -n -o ^| findstr :8085.*LISTENING') DO TaskKill.exe /PID %%P
Run Code Online (Sandbox Code Playgroud)
小智 18
要列出在端口8080上运行的所有进程,请执行以下操作.
netstat -ano | 找到"8080"
TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 10612
TCP [::]:8080 [::]:0 LISTENING 10612
Run Code Online (Sandbox Code Playgroud)
然后杀死进程运行以下命令
taskkill/F/PID 10612
xtr*_*trm 13
谢谢大家,只是添加一些进程不会关闭,除非/ F强制开关也与TaskKill一起发送.同时使用/ T开关,将关闭进程的所有辅助线程.
Run Code Online (Sandbox Code Playgroud)C:\>FOR /F "tokens=5 delims= " %P IN ('netstat -a -n -o ^| findstr :2002') DO TaskKill.exe /PID %P /T /F
对于服务,有必要获取服务的名称并执行:
sc停止ServiceName
创建了一个包含以下内容的 bat 文件,它接受端口号的输入
@ECHO ON
set /p portid=Enter the Port to be killed:
echo %portid%
FOR /F "tokens=5" %%T IN ('netstat -a -n -o ^| findstr %portid% ') DO (
SET /A ProcessId=%%T) &GOTO SkipLine
:SkipLine
echo ProcessId to kill = %ProcessId%
taskkill /f /pid %ProcessId%
PAUSE
Run Code Online (Sandbox Code Playgroud)
最后点击“Enter”退出。
归档时间: |
|
查看次数: |
302566 次 |
最近记录: |