找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
楼主: solan

[系统相关] 【已解决】批处理对多个同名不同版本的exe进程根据版本号有选择性的强制关闭

[复制链接]
 楼主| 发表于 2017-3-28 10:04:00 | 显示全部楼层
回复 30# ygqiang


    谢谢你了,不过我的是win10系统哦
发表于 2017-3-28 10:04:12 | 显示全部楼层
回复 29# solan
  1. (
  2.     wmic process where "name='lmgrd.exe'" get *
  3.     echo;==============
  4.     wmic service get *
  5. )>result.txt
  6. pause
复制代码
将result.txt用网盘分享出来
 楼主| 发表于 2017-3-28 10:35:44 | 显示全部楼层
本帖最后由 solan 于 2017-3-28 10:38 编辑

回复 26# ShowCode


    你的对的,我刚才测试的时候搞错,你的代码运行显示:

Version=8.3.18038.0



请按任意键继续. . .

但是换了我的服务进程lmgrd.exe就不对了
没有可用实例。



请按任意键继续. . .
 楼主| 发表于 2017-3-28 10:41:28 | 显示全部楼层
回复 32# pcl_test


  谢谢老大  链接:http://pan.baidu.com/s/1bpgopYZ 密码:zlof
发表于 2017-3-28 11:31:46 | 显示全部楼层
本帖最后由 pcl_test 于 2017-3-28 11:52 编辑
  1. @echo off
  2. for /f %%a in ('wmic process where "name='lmgrd.exe'" get ProcessId /value 2^>nul ^|find "="') do (
  3.     setlocal enabledelayedexpansion
  4.     set %%a
  5.     for /f "delims=" %%b in ('wmic service where "ProcessId='!ProcessId!'" get PathName /value 2^>nul ^|find "="') do set %%b
  6.     for /f  %%c in ('wmic datafile where "Name='!PathName:\=\\!'" get Version /value 2^>nul ^|find "="') do set %%c
  7.     echo;!ProcessId!
  8.     echo;!PathName!
  9.     echo;!Version!
  10.     echo;
  11.     endlocal
  12. )
  13. pause
复制代码
结果贴出来看看

评分

参与人数 1技术 +1 收起 理由
taofan712 + 1 乐于助人

查看全部评分

发表于 2017-3-28 11:42:24 | 显示全部楼层
本帖最后由 pcl_test 于 2017-3-28 11:57 编辑
  1. (
  2.     wmic process where "name='lmgrd.exe'" get ProcessId /value
  3.     echo;
  4.     wmic service where "PathName like '%%\\lmgrd.exe'" get Name,PathName,ProcessId /value
  5. )>tmp.txt
  6. pause
复制代码
将tmp.txt用网盘分享出来
 楼主| 发表于 2017-3-28 12:36:38 | 显示全部楼层
回复 35# pcl_test


    47780
C:\ProgramData\nx4.0_flex\lmgrd.exe
11.6.1.0

29360



请按任意键继续. . .
 楼主| 发表于 2017-3-28 12:38:41 | 显示全部楼层
本帖最后由 pcl_test 于 2017-3-28 19:04 编辑

回复 36# pcl_test
ProcessId=47780
ProcessId=29360

Name=NX4.0
PathName=C:\ProgramData\nx4.0_flex\lmgrd.exe
ProcessId=47780
发表于 2017-3-28 13:23:53 | 显示全部楼层
回复 38# solan

36楼改下%%\\lmgrd.exe%%
重新运行看看结果
 楼主| 发表于 2017-3-28 13:39:13 | 显示全部楼层
本帖最后由 pcl_test 于 2017-3-28 19:04 编辑

回复 39# pcl_test



ProcessId=47780
ProcessId=29360


Name=nx11
PathName="C:\Users\Administrator\Desktop\nx_flex\lmgrd.exe"
ProcessId=0


Name=NX4.0
PathName=C:\ProgramData\nx4.0_flex\lmgrd.exe
ProcessId=47780


Name=nx11.0
PathName="C:\Users\Administrator\Desktop\nx_flex\lmgrd.exe"
ProcessId=0
发表于 2017-3-28 13:52:36 | 显示全部楼层
本帖最后由 pcl_test 于 2017-3-29 05:07 编辑

版本获取没问题,但进程和服务的ProcessId能对上的只有一个
  1. @echo off
  2. for /f "delims=" %%a in ('wmic service where "PathName like '%%\\lmgrd.exe%%'" get PathName /value 2^>nul ^|find "="') do (
  3.     setlocal enabledelayedexpansion
  4.     set %%a
  5.     set PathName=!PathName:"=!
  6.     echo;!PathName!
  7.     for /f %%c in ('wmic datafile where "Name='!PathName:\=\\!'" get Version /value 2^>nul ^|find "="') do set %%c
  8.     for /f "tokens=1-4 delims=." %%d in ("!Version!.0.0") do (
  9.         set /a #a=%%d+100000000,#b=%%e+100000000,#c=%%f+100000000,#d=%%g+100000000
  10.         if "!#a!.!#b!.!#c!.!#d!" leq "100000011.100000006.100000001.100000000" (
  11.             echo;11.6.1.0 ^>= !Version!
  12.         ) else echo;11.6.1.0 ^< !Version!
  13.     )  
  14.     echo;
  15.     endlocal
  16. )
  17. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

 楼主| 发表于 2017-3-28 14:12:34 | 显示全部楼层
本帖最后由 solan 于 2017-3-28 14:15 编辑

回复 41# pcl_test


    我这些服务,每个服务一开启就会有2个同名进程
你们的代码我一点不懂啊,好难啊
 楼主| 发表于 2017-3-28 14:21:13 | 显示全部楼层
如果11.6.1.0版本的lmgrd.exe进程存在,我就保留,比他版本高的同名进程如果有的话全部结束
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 14:51 , Processed in 0.010802 second(s), 7 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表