应该不算是一个伪需求吧。。。
相关的命令
:: 枚举活动服务和驱动程序的状态
sc query
:: 停止迅雷后台服务
sc stop XLServicePlatform
net stop XLServicePlatform
:: 列出相关进程
tasklist
:: 杀死名称为QQProtect.exe的进程
taskkill /f /t /im QQProtect.exe
:: 杀死PID为4256的进程
taskkill /f /PID 4256
:: 查询for命令的用法
:: FOR /F ["options"] %variable IN (file-set) DO command [command-parameters]
:: FOR /F ["options"] %variable IN ("string") DO command [command-parameters]
:: FOR /F ["options"] %variable IN ('command') DO command [command-parameters]
for /?
:: 查询进程信息,并在其中筛选出含有QQProtect.exe的行
:: 对于每一行, 分隔符delims为" ", 选取第2部分、第3部分和剩余部分进行输出(tokens=2,3*)
FOR /F "tokens=2,3 delims= " %%i IN ('tasklist^|findstr QQProtect.exe') DO (echo %%i %%j %%k)
如何手动停止或禁用相关服务
直接上图
如何使用命令行停止相关服务
假设这个服务的名称是固定的,以迅雷服务为例:
- 找到服务的名称,注意上图的红框
可以看到,迅雷下载基础服务对应名称为 XLServicePlatform - 管理员运行命令提示符
- net stop XLServicePlatform
假设这个服务的名称并不固定,但是你知道它的关键词,以系统剪切板服务为例:
-
找到服务的名称规律
我们可以找到剪切板服务为cbdhsvc_6957c,但这并不实用,因为重启以后它的后缀就变了。
只能确认其前缀为cbdhsvc_ -
找到服务的名称
查询运行的服务的信息
sc query -
找到相关信息
sc query|findstr “cbdhsvc_” -
从相关信息中获取服务名,这里sc query后面的
|
号需要转义
FOR /F “tokens=2 delims= “ %i IN (‘sc query^|findstr “cbdhsvc_”’) DO (echo %i) -
停止服务(将打印信息echo替换为net stop)
FOR /F “tokens=2 delims= “ %i IN (‘sc query^|findstr “cbdhsvc_”’) DO (net stop %i) -
当我们写到.bat脚本里的时候,需要注意将%i替换为%%i
FOR /F “tokens=2 delims= “ %%i IN (‘sc query^|findstr “cbdhsvc_”’) DO (net stop %%i)
如何使用命令行停止相关进程
-
一般直接利用进程名称就行
taskkill /f /t /im QQProtect.exe -
复杂的需要通过tasklist进行查询,然后for命令获取PID并杀死进程
举例,我想杀死窗口名字带Q-Dir的进程-
查询进程详细信息
tasklist /V -
找到相关信息
tasklist /V|findstr Q-Dir -
找到它的PID
FOR /F “tokens=2 delims= “ %i IN (‘tasklist /V^|findstr Q-Dir’) DO (echo %i) -
杀死这个(些)进程
FOR /F “tokens=2 delims= “ %i IN (‘tasklist /V^|findstr Q-Dir’) DO (taskkill /f /PID %i) -
当我们写到.bat脚本里的时候,需要注意将%i替换为%%i
FOR /F “tokens=2 delims= “ %%i IN (‘tasklist /V^|findstr Q-Dir’) DO (taskkill /f /PID %%i)
-