标题: [系统相关] 批处理开启和结束进程(已解决) [打印本页]
作者: wushui 时间: 2014-11-24 11:22 标题: 批处理开启和结束进程(已解决)
本帖最后由 wushui 于 2014-11-25 11:14 编辑
打开一个程序 例如 1.exe 两种方式为 1.exe 带参数 1.exe -aaa
打开后有两个进程都叫1.exe 我怎么写两个批处理,分别关闭这两个(进程名相同)?
打开的两个命令:
start 1.exe
start 1.exe -aaa
关闭带参数的: wmic process where commandline="1.exe -aaa" call terminate
关闭不带参数的:wmic process where "CommandLine<>'1.exe -aaa' and name='1.exe'" call terminate
作者: DAIC 时间: 2014-11-24 13:00
复制代码
作者: wushui 时间: 2014-11-24 13:08
回复 2# DAIC
有两个a.exe进程, 第一个是直接打开,第二个是参数打开。
我要只关闭第二个,你这样两个都关了
作者: DAIC 时间: 2014-11-24 13:51
回复 3# wushui
执行命令:- wmic process where name="a.exe" get * /value > 1.txt
复制代码
把 1.txt 的内容发出来看看
作者: wushui 时间: 2014-11-24 14:12
回复 4# DAIC
Caption=a.exe
CommandLine=a.exe
CreationClassName=Win32_Process
CreationDate=20141124135500.841075+480
CSCreationClassName=Win32_ComputerSystem
CSName=WIN-F0287INACU7
Description=a.exe
ExecutablePath=E:\Debug\a.exe
ExecutionState=
Handle=3148
HandleCount=448
InstallDate=
KernelModeTime=10296066
MaximumWorkingSetSize=1380
MinimumWorkingSetSize=200
Name=a.exe
OSCreationClassName=Win32_OperatingSystem
OSName=Microsoft Windows 7 Ultimate |C:\Windows|\Device\Harddisk1\Partition2
OtherOperationCount=10895
OtherTransferCount=84038
PageFaults=43001
PageFileUsage=105596
ParentProcessId=5128
PeakPageFileUsage=105600
PeakVirtualSize=463982592
PeakWorkingSetSize=121800
Priority=8
PrivatePageCount=108130304
ProcessId=3148
QuotaNonPagedPoolUsage=50
QuotaPagedPoolUsage=640
QuotaPeakNonPagedPoolUsage=52
QuotaPeakPagedPoolUsage=698
ReadOperationCount=6173
ReadTransferCount=12324004
SessionId=1
Status=
TerminationDate=
ThreadCount=16
UserModeTime=423542715
VirtualSize=427761664
WindowsVersion=6.1.7601
WorkingSetSize=124252160
WriteOperationCount=11
WriteTransferCount=3653
Caption=a.exe
CommandLine=a.exe -aaa
CreationClassName=Win32_Process
CreationDate=20141124135505.628349+480
CSCreationClassName=Win32_ComputerSystem
CSName=WIN-F0287INACU7
Description=a.exe
ExecutablePath=E:\Debug\a.exe
ExecutionState=
Handle=7272
HandleCount=447
InstallDate=
KernelModeTime=8736056
MaximumWorkingSetSize=1380
MinimumWorkingSetSize=200
Name=a.exe
OSCreationClassName=Win32_OperatingSystem
OSName=Microsoft Windows 7 Ultimate |C:\Windows|\Device\Harddisk1\Partition2
OtherOperationCount=7514
OtherTransferCount=84597
PageFaults=42980
PageFileUsage=102204
ParentProcessId=8676
PeakPageFileUsage=107300
PeakVirtualSize=455192576
PeakWorkingSetSize=123164
Priority=8
PrivatePageCount=104656896
ProcessId=7272
QuotaNonPagedPoolUsage=50
QuotaPagedPoolUsage=635
QuotaPeakNonPagedPoolUsage=52
QuotaPeakPagedPoolUsage=697
ReadOperationCount=6138
ReadTransferCount=12262471
SessionId=1
Status=
TerminationDate=
ThreadCount=16
UserModeTime=286417836
VirtualSize=425541632
WindowsVersion=6.1.7601
WorkingSetSize=119992320
WriteOperationCount=559
WriteTransferCount=198585
作者: wushui 时间: 2014-11-24 14:50
回复 4# DAIC
3Q,在你的指导下,我明白怎么结束进程了 已经成功完成任务了
作者: DAIC 时间: 2014-11-24 21:26
回复 6# wushui
代码发出来给大家分享一下吧,也许有别人也会需要这个功能。
作者: amwfjhh 时间: 2014-11-24 22:57
- wmic process where name="a.exe" get commandline,processid|findstr /rc:" -.*"
复制代码
作者: CrLf 时间: 2014-11-24 23:43
回复 8# amwfjhh
where 支持 and 和 like- wmic process where "name='a.exe' and commandline like '% -aaa%'" call Terminate
复制代码
作者: amwfjhh 时间: 2014-11-24 23:57
回复 9# CrLf
我原想的是后边参数为非固定值,这样的话可以由输入映像命来取得带参进程,继而关闭之。
作者: CrLf 时间: 2014-11-25 00:05
回复 10# amwfjhh
噢
不过仔细想了下,我们的代码都有不严谨的地方,假如那个 a.exe 的路径是 c:\测试 -aaa\a.exe
卧槽想到这里整个人都不好了,不要说sb才这么命名,我就这么干过
作者: CrLf 时间: 2014-11-25 00:11
如果进程有先后顺序的话,也可以用 CreationDate 来区分
还有个不太靠谱的办法是按 pid 猜测,一般来说(一般来说!)后出现的进程 pid 值往往比前辈大
以前不小心运行了几次相同的 vbs,要只留最新的一个,没辙的时候就是这么蒙的
作者: amwfjhh 时间: 2014-11-25 00:13
这个貌似可以在搜寻正则里把映像名加上。
作者: CrLf 时间: 2014-11-25 00:49
回复 13# amwfjhh
好吧,那我就再恶心点:- start "一个恶心的例子" "c:\a.exe -aaa\a.exe"
复制代码
作者: amwfjhh 时间: 2014-11-25 01:26
本帖最后由 amwfjhh 于 2014-11-25 11:45 编辑
好吧,这个够恶心
作者: wushui 时间: 2014-11-25 11:13
回复 7# DAIC
我处理的地方是英文目录,并且没有上面人回复里面那么复杂的目录。
打开的两个命令:
start 1.exe
start 1.exe -aaa
现在系统有两个1.exe 同名进程 通过pid无法完成,因为不会。 任务管理器查看有命令行一列是不一样的
按照你的命令,查看CommandLine不一样
关闭带参数的: wmic process where commandline="1.exe -aaa" call terminate
关闭不带参数的:wmic process where "CommandLine<>'1.exe -aaa' and name='1.exe'" call terminate
不知道为什么直接 wmic process where CommandLine='1.exe' call terminate 无效
我的要求比较低,只需要满足我的需求就行了,所以可能写的比较粗糙
作者: CrLf 时间: 2014-11-25 14:58
回复 16# wushui - where "CommandLine='1.exe'"
复制代码
或- where CommandLine="1.exe"
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |