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

[系统相关] [已解决]批处理怎样按要求关闭相同的进程?

比方:现在打开一个cmd.exe 并隐藏运行,在打开一个cmd.exe。     在后面的过程中,不想关闭第二次打开的cmd.exe,只关闭第一次打开的cmd.exe
          请问是怎么做呢?
   进入进程里看见的也是2个cmd.exe ,只是PID不同。
1

评分人数

    • CrLf: 感谢给帖子标题标注[已解决]字样PB + 2

你的意思是:
第一个——隐藏运行,并能关闭
第二个——不隐藏运行,并不能关闭?
为何批处理不适合做界面
为何随风讨厌call命令
http://bbs.bathome.net/thread-4482-1-10.html

TOP

不是的    第一隐藏运行;第二没隐藏运行。可以是我只想关闭第一个cmd.exe,不想关闭第二个cmd.exe
  请问该怎么做呢?
进入进程里看见的也是2个cmd.exe ,只是PID不同。
1

评分人数

    • telnet: 谢谢楼主 帮助技术 + 1

TOP

回复 2# raymai97


    不是你说的这样

TOP

我也想知道啊,哈哈。

TOP

没有时间,先写个,来不及debug,所以会有bug,等我有空再debug吧
现在先让楼主思考思考
  1. @echo off
  2. ::在背后启动第一个窗口
  3. if "%1"=="lol" goto hide
  4. set a=%random%
  5. start /b "" %0 lol %a%
  6. ::给第一个窗口一点时间来准备
  7. echo 请等待……
  8. ping -n 2 127.1>nul
  9. :a
  10. cls
  11. echo 我是第二个窗口
  12. ::如果没有发现第一个窗口的遗信,就进行互动,否则直接认为第一个窗口已不在
  13. 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 隐藏着的第一个窗口已关闭)
  14. :b
  15. echo.
  16. echo 提示:新建%a%die再按任意键看看,会发现隐藏的窗口已关闭。
  17. echo.
  18. pause
  19. goto a
  20. :hide
  21. set a=%2
  22. :hide2
  23. ::当发现%a%alive不在时就做多一个%a%alive,以跟第二个窗口互动
  24. if not exist %a%alive echo abc>%a%alive
  25. ::当隐藏中的窗口发现自己离去(退出)了,就留下%a%last的遗信,已告知第二个窗口它已经离开了
  26. if exist %a%die erase /f /q %a%die&echo abc>%a%last&exit
  27. goto hide
复制代码
1

评分人数

    • CrLf: 乐于助人技术 + 1
为何批处理不适合做界面
为何随风讨厌call命令
http://bbs.bathome.net/thread-4482-1-10.html

TOP

请搜索论坛“进程”
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

TOP

楼上的有的复杂了哈哈  我有个思路
其实第一个cmd.exe的启动我们不去考虑
但是这里有个思路就是再开第二个CMD之前进程里只有一个CMD程序
所以思路就在这里了,运行第二个批处理的时候 先检测进程里的第一个CMD程序的PID 然后将其结束就可以了 哈哈 爽了吧

TOP

wmic process where name='cmd.exe' get CreationDate, processid|more +1|sort /r

找最后一行,然后用

taskkill /f /pid ****

TOP

有点复杂  弄不懂   
想现成的代码来研究
  谢谢

TOP

本帖最后由 raymai97 于 2011-8-30 09:18 编辑

回复 10# mstsc
  1. @echo off
  2. if "%1"=="a" goto a
  3. set code=%random%
  4. title 通过后台通信,来知道对方“挂”了没
  5. echo.
  6. echo  此批处理由raymai97制作
  7. echo.
  8. echo  按任意键继续……
  9. echo.
  10. pause>nul
  11. start /b "" %0 a %code%>nul
  12. echo  请等待……
  13. ping -n 2 127.1>nul
  14. :b
  15. cls
  16. if exist %code%.tmp call :d
  17. if "%dead%"=="0" echo 它还没有死…… 创建%code%.godie来让它死
  18. if "%dead%"=="1" echo 它死掉了……&if exist %code%.godie erase /f /q %code%.godie
  19. echo.
  20. echo 按任意键刷新…… dead变量为%dead%
  21. echo.
  22. pause>nul
  23. goto b
  24. :a
  25. set code=%2
  26. if "%code%"=="" exit
  27. :c
  28. if not exist %code%.tmp echo %random%>%code%.tmp
  29. if exist %code%.godie exit
  30. goto c
  31. :d
  32. erase /f /q %code%.tmp
  33. ping -n 1 127.1>nul
  34. if not exist %code%.tmp (set dead=1) else (set dead=0)
  35. exit /b
复制代码
刚刚才做的,新鲜出炉,你应该会明白如何用~
1

评分人数

为何批处理不适合做界面
为何随风讨厌call命令
http://bbs.bathome.net/thread-4482-1-10.html

TOP

为何批处理不适合做界面
为何随风讨厌call命令
http://bbs.bathome.net/thread-4482-1-10.html

TOP

谢谢     帮助
1

评分人数

    • telnet: 要多多努力技术 + 1

TOP

返回列表