标题: [系统相关] 批处理如何查找名字为全数字的进程,并结束该进程? [打印本页]
作者: hijackle 时间: 2014-6-27 03:03 标题: 批处理如何查找名字为全数字的进程,并结束该进程?
本帖最后由 pcl_test 于 2016-2-10 11:54 编辑
比如windows系统的进程中存在5452143.exe(当然这个进程名是随机全数字组合的)
如何定位该进程,然后结束该进程。
作者: CrLf 时间: 2014-6-27 03:31
这样:- for /f delims^=^" %%a in ('tasklist /fo csv ^| findstr /i "^\"[0-9][0-9]*\.exe\""') do taskkill %%a
复制代码
但其实涉及到系统管理操作的时候,可以的话建议用 powershell:- Get-Process|Where-Object{$_.processname -match '^\d+}|Stop-Process
复制代码
作者: whcg88ff 时间: 2016-2-10 10:37
测试第一条命令有效,请问大大,怎么样可以限制数字的位数呢?比如4位数以上的进程全部结束
作者: pcl_test 时间: 2016-2-10 11:53
回复 3# whcg88ff
findstr /i "^\"[0-9][0-9][0-9][0-9][0-9]*\.exe\""
作者: ivor 时间: 2016-2-11 16:18
Get-Process|Where-Object{$_.processname -match "^[0-9]{4,}$"}|Stop-Process
2楼修改了一下,匹配最少四位数字
作者: /zhqsystem/zhq 时间: 2016-2-11 23:26
回复 1# hijackle
- @echo off&(setlocal enabledelayedexpansion)>nul 2>nul
- for /f "delims=" %%i in ('wmic process get caption /value^|findstr/i "[0-9]"')do (set "%%i"
- for /f "delims=" %%j in ("!caption!")do (set "name=%%~nj"&set "new="&set "n="
- for /l %%n in (0,1,8092)do if /i not "%%~nxj"=="" if /i not "!name:~%%n,1!"=="" (
- for /l %%o in (0,1,9)do if /i "!name:~%%n,1!"=="%%o" (set/a "n+=1"
- if defined new (set "new=!new!!name:~%%n,1!")else (set "new=!name:~%%n,1!")
- )
- )
- if /i "!new!%%~xj"=="%%~nxj" (
- echo,!n!
- if !n! gtr 4 (
- echo,%%~nxj
- )
- )
- )
- )
- pause
复制代码
注:没测试
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |