[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
这绝对是一个挑战。只要处理一个情况就可以了吗?
兄有解了吗?

[ 本帖最后由 pusofalse 于 2008-8-21 19:44 编辑 ]
心绪平和,眼藏静谧。

TOP

貌似这个要用到多进程了,记录下“主军”的pid,用“友军”来监控进程。
心绪平和,眼藏静谧。

TOP

回复 4楼 的帖子

我当然会加满分。^_^
心绪平和,眼藏静谧。

TOP

思路是有,但感觉总会有点绕。
“主军”的PID。。。万一运行时开着另外一个CMD.EXE,那要如何区分呢。
这个问题得好好想想。
心绪平和,眼藏静谧。

TOP

对了,能产生临时文件吗?
心绪平和,眼藏静谧。

TOP

回复 12楼 的帖子

了解。。。^_^
心绪平和,眼藏静谧。

TOP

对了。。兄所说的“当其他的程序关闭你的批处理的时候。。。”
这里是结束PID,还是直接点那个关闭按钮?
心绪平和,眼藏静谧。

TOP

  1. @echo off&setlocal enabledelayedexpansion&title Test
  2. for %%a in ("%cd%.tmp") do set dir=%%~dpa
  3. for /f "tokens=2" %%a in ('tasklist /fi "imagename eq cmd.exe" /nh') do set pid=%%a&goto next
  4. :next
  5. echo @echo off>%temp%\youjun.bat
  6. echo :loop>>%temp%\youjun.bat
  7. echo set zhujunpid=>>%temp%\youjun.bat
  8. echo for /f "tokens=2" %%%%a in ^('tasklist /fi "pid eq %pid%" /nh') do set "zhujunpid=%%%%a">>%temp%\youjun.bat
  9. echo if not defined zhujunpid ^(>>%temp%\youjun.bat
  10. echo         echo 被关闭时间是在 [%%date%%]   [%%time%%]^>"%dir%关闭时间.txt">>%temp%\youjun.bat
  11. echo         start "" "%dir%关闭时间.txt">>%temp%\youjun.bat
  12. echo>>%temp%\youjun.bat         start %~fs0
  13. echo         echo had^>%temp%\had.tmp>>%temp%\youjun.bat
  14. echo         exit>>%temp%\youjun.bat
  15. echo ^)>>%temp%\youjun.bat
  16. echo goto loop>>%temp%\youjun.bat
  17. :lp
  18. start /min %temp%\youjun.bat
  19. :loop
  20. set n=0
  21. for /f %%a in ('tasklist /fi "imagename eq cmd.exe" /nh') do cls&set/a n+=1
  22. if %n% leq 2 goto lp
  23. if not exist %temp%\had.tmp (
  24.         title 这只是测试ing。。。o^(∩_∩^)o。。。
  25.         ) else (
  26.         title 我又复活了。。。o^(∩_∩^)o。。。
  27.         if %n% gtr 4 (
  28. del %dir%关闭时间.txt;%temp%\had.tmp;%temp%\youjun.bat
  29. pause>nul
  30.        )
  31. )
  32. for /l %%a in (1 1 400) do cls>nul
  33. goto loop
复制代码
现在的代码只能完成前面两种情况。在kill cmd.exe之后仍能复活,恐怕BAT的确做不到了。
起初的代码在结束“友军”之后就全部OVER了,现在结束“友军”之后“主军”仍能复活,除非全部kill。

[ 本帖最后由 pusofalse 于 2008-8-22 01:07 编辑 ]
心绪平和,眼藏静谧。

TOP

回复 21楼 的帖子

试过了,同样是显示cmd.exe
心绪平和,眼藏静谧。

TOP

精彩!
测试果真关不了。最后我先结束Wscript.exe,然后kill cmd.exe,完了,临时文件没删除。
要是这么搞病毒,看来得实时查杀任务管理器。
心绪平和,眼藏静谧。

TOP

返回列表