[批处理]进程相关处理

@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

 

posted @ 2009-11-08 16:49  waterfrost  阅读(1069)  评论(0)    收藏  举报