Board logo

标题: [其他] 监视进程的批处理如何循环? [打印本页]

作者: zzjj007    时间: 2008-4-7 19:33     标题: 监视进程的批处理如何循环?

:1
if exist c:\1.txt del c:\1.txt
if exist c:\2.txt del c:\2.txt
tasklist >c:\1.txt
find /i "ar2p.exe" c:\1.txt >c:\2.txt
for /f "skip=2 tokens=1" %%i in (c:\2.txt) do set a=%%i
if %a%==ar2p.exe goto 2
goto 1
:2
shutdown -s -t 10

我想要个监视进程的批处理
我说的错是假如没AR2P.EXE这个进程 他怎么不循环

[ 本帖最后由 zzjj007 于 2008-4-7 19:35 编辑 ]
作者: zzjj007    时间: 2008-4-7 19:56

谢谢 我知道怎么弄了
作者: 随风    时间: 2008-4-7 20:04

首先:不用这么多的临时文件。
if %a%==ar2p.exe 你的错误在这一句,%a%的值永远是2.txt最后一行的内容。
所以它很难 goto 2  除非正好ar2p.exe 排在最后一个
但是不循环的原因却不在此。
if /i "%a%"=="ar2p.exe" goto 2 这样应该就可以循环了。
find /i "ar2p.exe" c:\1.txt >c:\2.txt 这一句。
如果没有ar2p.exe,那么也就不会有2.txt文件了
如果没有2.txt那么%a%也就是空值了,
此时if %a%==ar2p.exe 就等于是if ==ar2p.exe 也就是语法错误了,当然也就退出了。
:
  1. @echo off
  2. :1
  3. for /f "skip=2 tokens=1" %%i in ('tasklist') do (
  4.   if /i "%%i"=="ar2p.exe" goto 2
  5. )
  6. goto 1
  7. :2
  8. shutdown -s -t 10
复制代码

作者: zzjj007    时间: 2008-4-7 20:25

谢谢楼上的 我还想问下 你那个for 挎号换行的时候前面空几个有一定的规定吗 有的话是几个啊 旧象你上面的IF。。。
作者: 随风    时间: 2008-4-7 20:35     标题: 回复 4楼 的帖子

可以不要,加空格只是为了书写美观和便于查看。当代码很长时,就体现好处了。
作者: chenpuwk    时间: 2008-4-9 19:09

刚入门
  看不太懂啊

有没有比较基础一点的
作者: fml520    时间: 2008-4-10 11:09

原帖由 chenpuwk 于 2008-4-9 19:09 发表
刚入门
  看不太懂啊

有没有比较基础一点的


看这里的文章 for命令通俗教程
http://bbs.bathome.net/viewthread.php?tid=9&extra=page%3D2
作者: s475834678    时间: 2008-4-26 06:02     标题: 吖吖

对我现在来讲。看起来难啊




欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2