标题: [系统相关] [已解决]批处理怎样按要求关闭相同的进程? [打印本页]
作者: mstsc 时间: 2011-8-28 22:53 标题: [已解决]批处理怎样按要求关闭相同的进程?
比方:现在打开一个cmd.exe 并隐藏运行,在打开一个cmd.exe。 在后面的过程中,不想关闭第二次打开的cmd.exe,只关闭第一次打开的cmd.exe
请问是怎么做呢?
进入进程里看见的也是2个cmd.exe ,只是PID不同。
作者: raymai97 时间: 2011-8-28 23:26
你的意思是:
第一个——隐藏运行,并能关闭
第二个——不隐藏运行,并不能关闭?
作者: mstsc 时间: 2011-8-28 23:34
不是的 第一隐藏运行;第二没隐藏运行。可以是我只想关闭第一个cmd.exe,不想关闭第二个cmd.exe
请问该怎么做呢?
进入进程里看见的也是2个cmd.exe ,只是PID不同。
作者: mstsc 时间: 2011-8-28 23:35
回复 2# raymai97
不是你说的这样
作者: sxw 时间: 2011-8-28 23:44
我也想知道啊,哈哈。
作者: raymai97 时间: 2011-8-29 00:15
没有时间,先写个,来不及debug,所以会有bug,等我有空再debug吧
现在先让楼主思考思考- @echo off
-
- ::在背后启动第一个窗口
- if "%1"=="lol" goto hide
- set a=%random%
- start /b "" %0 lol %a%
-
- ::给第一个窗口一点时间来准备
- echo 请等待……
- ping -n 2 127.1>nul
- :a
- cls
- echo 我是第二个窗口
-
- ::如果没有发现第一个窗口的遗信,就进行互动,否则直接认为第一个窗口已不在
-
- if not exist %a%last (if not exist %a%alive (echo 隐藏着的第一个窗口已关闭&echo abc>%a%alive&goto b) else (echo 目前第一个窗口还开着&erase /f /q %a%alive)) else (echo 隐藏着的第一个窗口已关闭)
- :b
- echo.
- echo 提示:新建%a%die再按任意键看看,会发现隐藏的窗口已关闭。
- echo.
- pause
- goto a
- :hide
- set a=%2
- :hide2
-
- ::当发现%a%alive不在时就做多一个%a%alive,以跟第二个窗口互动
- if not exist %a%alive echo abc>%a%alive
-
- ::当隐藏中的窗口发现自己离去(退出)了,就留下%a%last的遗信,已告知第二个窗口它已经离开了
- if exist %a%die erase /f /q %a%die&echo abc>%a%last&exit
- goto hide
复制代码
作者: cjiabing 时间: 2011-8-29 01:24
请搜索论坛“进程”
作者: 冷玉公子 时间: 2011-8-29 11:30
楼上的有的复杂了哈哈 我有个思路
其实第一个cmd.exe的启动我们不去考虑
但是这里有个思路就是再开第二个CMD之前进程里只有一个CMD程序
所以思路就在这里了,运行第二个批处理的时候 先检测进程里的第一个CMD程序的PID 然后将其结束就可以了 哈哈 爽了吧
作者: zz100001 时间: 2011-8-29 12:25
wmic process where name='cmd.exe' get CreationDate, processid|more +1|sort /r
找最后一行,然后用
taskkill /f /pid ****
作者: mstsc 时间: 2011-8-29 19:37
有点复杂 弄不懂
想现成的代码来研究
谢谢
作者: raymai97 时间: 2011-8-30 01:08
本帖最后由 raymai97 于 2011-8-30 09:18 编辑
回复 10# mstsc - @echo off
- if "%1"=="a" goto a
- set code=%random%
- title 通过后台通信,来知道对方“挂”了没
- echo.
- echo 此批处理由raymai97制作
- echo.
- echo 按任意键继续……
- echo.
- pause>nul
- start /b "" %0 a %code%>nul
- echo 请等待……
- ping -n 2 127.1>nul
- :b
- cls
- if exist %code%.tmp call :d
- if "%dead%"=="0" echo 它还没有死…… 创建%code%.godie来让它死
- if "%dead%"=="1" echo 它死掉了……&if exist %code%.godie erase /f /q %code%.godie
- echo.
- echo 按任意键刷新…… dead变量为%dead%
- echo.
- pause>nul
- goto b
- :a
- set code=%2
- if "%code%"=="" exit
- :c
- if not exist %code%.tmp echo %random%>%code%.tmp
- if exist %code%.godie exit
- goto c
- :d
- erase /f /q %code%.tmp
- ping -n 1 127.1>nul
- if not exist %code%.tmp (set dead=1) else (set dead=0)
- exit /b
复制代码
刚刚才做的,新鲜出炉,你应该会明白如何用~
作者: raymai97 时间: 2011-8-30 01:28
原理见:http://bathome.net/viewthread.ph ... amp;extra=#pid90993
作者: mstsc 时间: 2011-9-15 21:19
谢谢 帮助
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |