Board logo

标题: [系统相关] 批处理如何查找名字为全数字的进程,并结束该进程? [打印本页]

作者: hijackle    时间: 2014-6-27 03:03     标题: 批处理如何查找名字为全数字的进程,并结束该进程?

本帖最后由 pcl_test 于 2016-2-10 11:54 编辑

比如windows系统的进程中存在5452143.exe(当然这个进程名是随机全数字组合的)

如何定位该进程,然后结束该进程。
作者: CrLf    时间: 2014-6-27 03:31

这样:
  1. for /f delims^=^" %%a in ('tasklist /fo csv ^| findstr /i "^\"[0-9][0-9]*\.exe\""') do taskkill %%a
复制代码
但其实涉及到系统管理操作的时候,可以的话建议用 powershell:
  1. 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
  1. @echo off&(setlocal enabledelayedexpansion)>nul 2>nul
  2. for /f "delims=" %%i in ('wmic process get caption /value^|findstr/i "[0-9]"')do (set "%%i"
  3. for /f "delims=" %%j in ("!caption!")do (set "name=%%~nj"&set "new="&set "n="
  4.   for /l %%n in (0,1,8092)do if /i not "%%~nxj"=="" if /i not "!name:~%%n,1!"=="" (
  5.    for /l %%o in (0,1,9)do if /i "!name:~%%n,1!"=="%%o" (set/a "n+=1"
  6.     if defined new (set "new=!new!!name:~%%n,1!")else (set "new=!name:~%%n,1!")
  7.    )
  8.   )
  9.   if /i "!new!%%~xj"=="%%~nxj" (
  10.    echo,!n!
  11.    if !n! gtr 4 (
  12.     echo,%%~nxj
  13.    )
  14.   )
  15. )
  16. )
  17. pause
复制代码

注:没测试




欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2