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

[其他] 监视进程的批处理如何循环?

: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 编辑 ]

谢谢 我知道怎么弄了

TOP

首先:不用这么多的临时文件。
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
复制代码
技术问题请到论坛发帖求助!

TOP

谢谢楼上的 我还想问下 你那个for 挎号换行的时候前面空几个有一定的规定吗 有的话是几个啊 旧象你上面的IF。。。

TOP

回复 4楼 的帖子

可以不要,加空格只是为了书写美观和便于查看。当代码很长时,就体现好处了。
技术问题请到论坛发帖求助!

TOP

刚入门
  看不太懂啊

有没有比较基础一点的

TOP

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

有没有比较基础一点的


看这里的文章 for命令通俗教程
http://bbs.bathome.net/viewthread.php?tid=9&extra=page%3D2
@set,=学无止境
@for /l %%b in (0,1,6) do @call set/p= %%,:~%%b,1%%<nul

TOP

吖吖

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

TOP

返回列表