[批处理]进程相关处理
@echo off
:start
:: set the size of window
::mode con cols=60 lines=300
cls
echo Time / Date:%time:~0,8% / %date%
echo =========================================
title 进程相关处理 By:Waterfrost
color 3f
echo 说明:需要tasklist/taskkill文件支持
echo 一般2000/XP应该都有,如果没有需要从别的XP
echo 系统中把文件拷到C:\windows\system32目录下
echo.
echo +++By:Waterfrost 2009-10-20+++++++++++++++
echo == [1] 查看所有进程信息==================
echo == [2] 查看指定进程信息=======
echo == [3] 查找所有进程包含模块(Dll)=========
echo == [4] 查找指定Dll所在进程===============
echo == [5] 显示每个进程中服务================
echo == [6] 显示指定进程中服务================
echo == [7] 结束指定进程======================
echo == [8] 根据内存占用量查找进程============
echo == [0] 退出==============================
echo ==^>
set input=
set /p input=Select(1/2/3/4/5/6/7/8/0):
if "%input%"=="" goto start
if "%input%"=="1" goto allprocess
if "%input%"=="2" goto process
if "%input%"=="3" goto allmodules
if "%input%"=="4" goto module
if "%input%"=="5" goto allservices
if "%input%"=="6" goto service
if "%input%"=="7" goto killprocess
if "%input%"=="8" goto mem
if "%input%"=="0" exit
goto start
:allprocess
if not exist "%windir%\system32\tasklist.exe" echo No tasklist.exe&pause&goto start
echo 使用什么输出格式查看所有进程:csv,table,list,默认table
set task=tasklist /fo
set form=t
set /p form=Select(C/T/L):
if /i "%form%"=="t" %task% table |more
if /i "%form%"=="c" %task% csv |more
if /i "%form%"=="l" %task% list |more
echo 按任意键返回主菜单
pause>nul
goto start
:process
if not exist "%windir%\system32\tasklist.exe" echo No tasklist.exe&pause&goto start
echo 使用什么方式查看指定进程(默认使用名称查看)
echo 1.进程的PID
echo 2.进程的名称
set form=2
set /p form=Select(1/2):
if /i "%form%"=="1" goto pid
if /i "%form%"=="2" goto imagename
echo 按任意键返回主菜单
pause>nul
goto start
:pid
set /p pid=请输入进程PID号:
if /i "%pid%"=="" (goto process) else tasklist /v /fi "pid eq %pid%" /fo list |more
echo 任意键返回主菜单
pause>nul
goto start
:imagename
set /p name=请输入进程名称:
if /i "%name%"=="" (goto process) else tasklist /v /fi "imagename eq %name%" /fo list|more
echo 任意键返回主菜单
pause>nul
goto start
:allmodules
tasklist /m |more
echo 任意键返回主菜单
pause>nul
goto start
:module
echo 请输入模块名(不需要输入.dll)
set /p module=模块名称:
if /i "%module%"=="" goto module
tasklist /m %module%.dll |more
echo 任意键返回主菜单
pause>nul
goto start
:allservices
tasklist /svc |more
echo 任意键返回主菜单
pause>nul
goto start
:service
echo 请指定进程的PID或进程名称,默认选择为进程名称
echo 1.进程PID
echo 2.进程名称
set form=2
set /p form=Select(1/2):
if /i "%form%"=="1" goto servicepid
echo 请输入进程名称(需要输入.exe或其他后缀)
set /p imagename=进程名称:
tasklist /svc |find /i "%imagename%"
echo 任意键返回主菜单
pause>nul
goto start
:servicepid
echo 请输入进程PID
set /p ppid=进程PID:
if "%ppid%"=="" goto servicepid
tasklist /svc /fi "pid eq %ppid%"
echo 任意键返回主菜单
pause>nul
goto start
:killprocess
if not exist "%windir%\system32\taskkill.exe" echo No taskkill.exe&pause&goto start
echo 请指定PID或进程名称结束进程,默认选择为进程名称
echo 1.进程PID
echo 2.进程名称
set form=2
set /p form=Select(1/2):
if /i "%form%"=="1" goto killpid
echo 请输入进程名称(需要输入.exe或其他后缀)
set imagename=
set /p imagename=进程名称:
if "%imagename%"=="" goto killprocess
taskkill /im %imagename% /f>nul
echo 任意键返回主菜单
pause>nul
goto start
:killpid
echo 请输入进程PID
set /p ppid=进程PID:
if "%ppid%"=="" goto killpid
taskkill /f /pid %ppid%>nul
::sntsd -c q -p %ppid% 1>nul 2>nul
echo 任意键返回主菜单
pause>nul
goto start
:mem
echo 请输入要查询的内存使用量(单位为KB)
set mem=
set /p mem=内存占用量:
if "%mem%"=="" goto mem
echo 请选择对比操作(默认为大于等于)
set op=6
echo 1.小于
echo 2.小于等于
echo 3.等于
echo 4.不等于
echo 5.大于
echo 6.大于等于
set /p op=操作类型(1/2/3/4/5/6):
if /i "%op%"=="1" tasklist /fo table /fi "memusage lt %mem%"|more
if /i "%op%"=="2" tasklist /fo table /fi "memusage le %mem%"|more
if /i "%op%"=="3" tasklist /fo table /fi "memusage eq %mem%"|more
if /i "%op%"=="4" tasklist /fo table /fi "memusage ne %mem%"|more
if /i "%op%"=="5" tasklist /fo table /fi "memusage gt %mem%"|more
if /i "%op%"=="6" tasklist /fo table /fi "memusage ge %mem%"|more
echo 任意键返回主菜单
pause>nul
goto start
浙公网安备 33010602011771号