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

大哥大 一来就发这种题目……直教人吐血。批处理史上最顽强的病毒版,即将问世,
我能做的就是看着问世。o my god!

TOP

当其他的程序关闭你的批处理的时候。你的批处理能知道这种情况的发生

有能达到这样的效果的命令吗!!!期待中..........

[ 本帖最后由 start 于 2008-8-21 22:03 编辑 ]
忆往昔笑豺狼哭叱咤天地风云际望今朝笑贫不笑娼人民不敌人民币

TOP

都可以。你可以用任务管理器关闭,也可以点关闭来模拟这种情况的出现。

TOP

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

TOP

回复 12楼 的帖子

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

TOP

原帖由 pusofalse 于 2008-8-21 19:51 发表
对了,能产生临时文件吗?

当然可以产生临时文件,不过临时文件在正常退出批处理的时候,要能被清除

TOP

原帖由 pusofalse 于 2008-8-21 19:49 发表
思路是有,但感觉总会有点绕。
“主军”的PID。。。万一运行时开着另外一个CMD.EXE,那要如何区分呢。
这个问题得好好想想。


不饶点,怎么行呢,那里能简简单单的获取分数。你说是吧。

TOP

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

TOP

原帖由 pusofalse 于 2008-8-21 19:41 发表
这绝对是一个挑战。只要处理一个情况就可以了吗?
兄有解了吗?


根据自己的情况呀。如果能同时处理3种情况自然最好。。

但若不行,根据自己的实力,只处理一种情况也行啊。

TOP

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

TOP

嗯。。斑竹就是厉害,一下就想到了。

那么想看看斑竹的方案哟。

要记得哦。。别杀错了pid哟。

TOP

回复 4楼 的帖子

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

TOP

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

TOP

对了。斑竹,你觉得完成了挑战的人应该+多少分呢 ?

而且,说实话,当代码放出来的时候。你会惊讶原来可以如此简单。

TOP

返回列表