Board logo

标题: [文件操作] [已解决]批处理多文件循环读取 [打印本页]

作者: hackf    时间: 2009-10-9 13:04     标题: [已解决]批处理多文件循环读取

  1. @echo off & setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in (a.txt) do (
  3.         for /f "delims=" %%a in ('findstr /n .*  b.txt') do (
  4.                ...........................................................
复制代码
问题是把b.txt 的b 设置成变量,运行开始时,b是1,既1.txt ,一共有9个txt 既:1.txt 2.txt 3.txt......9.txt ,9.txt读完,就回到1.txt开始读取.
还有一个问题是在for 能不能延时,就是停1秒钟这样

[ 本帖最后由 hackf 于 2009-10-10 15:11 编辑 ]
作者: asnahu    时间: 2009-10-9 15:17     标题: 回复 1楼 的帖子

兄台,总共才九个文件,批处理有点来浪费。
作者: hackf    时间: 2009-10-9 15:28

原帖由 asnahu 于 2009-10-9 15:17 发表
兄台,总共才九个文件,批处理有点来浪费。

哈,到时要的话,再加了,主要是怎么判断已经到第9个了,然后再去读取1.txt
作者: keen    时间: 2009-10-9 17:13

无限循环:
  1. @echo off
  2. :lp
  3. for /l %%i in (1 1 9) do (
  4.     for /f "delims=" %%a in ('findstr /n .* %%i.txt') do echo %%a
  5. )
  6. goto lp
  7. pause
复制代码

作者: hackf    时间: 2009-10-9 21:06

呜呜,不懂怎么用进去,不过还是很谢谢楼上的。能不能帮我写个当b等于10时,减10 。如果小于10就跳过,批处理要怎么写,因为这样也可以达到我的目的

[ 本帖最后由 hackf 于 2009-10-10 07:40 编辑 ]
作者: vsbat    时间: 2009-10-10 10:23

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set b=1
  4. :u
  5. for /f %%i in ('findstr/n .* !b!.txt') do (echo ok!b!&set /a b=!b!+1&ping  -n  1 127.0.0.1>nul)
  6. if !b!==10 (set b=1
  7. goto u) else (goto u)
复制代码
实现效果:依次读取 1到9.txt---到9.txt 后返回 1.txt 继续读取
  LZ     do 后面 & 符号之前的命令你要自己设定了,set /a b=!b!+1是必备的不可少---
有 延时 了 ping  延时 1 秒
不知代码是否是你想要的
作者: hackf    时间: 2009-10-10 11:52

整个代码是这样的
  1. @echo off & setlocal enabledelayedexpansion
  2. set m=1
  3. ................
  4. set /a m+=1   问题:当M大于9时,设m=1
  5. exit
复制代码

[ 本帖最后由 hackf 于 2009-10-10 15:10 编辑 ]
作者: zqz0012005    时间: 2009-10-10 12:33

set /a b+=1,  b%%=10
作者: hackf    时间: 2009-10-10 15:07

原帖由 zqz0012005 于 2009-10-10 12:33 发表
set /a b+=1,  b%%=10


哈,谢谢,偶从0.txt开始就OK了
作者: zqz0012005    时间: 2009-10-10 18:31     标题: 回复 9楼 的帖子

汗。。。其实我没仔细看,缺省认为你就是从0开始的。

从1开始
set /a b+=1,  b=b%%10+1




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