Board logo

标题: [其他] 【已解决】批处理命令for /f变量采集 [打印本页]

作者: chouxia    时间: 2015-4-11 08:57     标题: 【已解决】批处理命令for /f变量采集

本帖最后由 chouxia 于 2015-4-16 16:29 编辑

文本文件内容如下
kaishi=0
num=909
mode=1
vip=10
duan=1,100,100
duan=101,500,1000
duan=501,1000,1000
duan=1001,1309,1000
需求
采集=号后面的内容进入变量。
代码如下:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f %%z in ('findstr /s /i /m "kaishi=0" *.txt') do (
  4. for /f "tokens=1,* delims=="  %%a in ('find "num" ^< %%z') do (set num=%%b)
  5. for /f "tokens=1,* delims=="  %%c in ('find "mode" ^< %%z') do (set mode=%%d)
  6. for /f "tokens=1,* delims=="  %%e in ('find "vip" ^< %%z') do (set vip=%%f)
  7. for /f "tokens=1,2,3,* delims==, "  %%g in ('find "duan" ^< %%z') do (
  8. set start=%%h
  9. set end=%%i
  10. set min=%%j
  11. echo 标志位1
  12. echo !start! !end! !min!
  13. echo !num! !mode! !vip!
  14. pause
  15. goto main
  16. ))
复制代码
输出结果不满意,
第一次循环,所有变量都没有获取内容
第二次开始循环能采集到kaishi num mode vip的数据。但start end min始终不行。
哪位高人给个建议哈。
第一次循环没有数据是因为第一个for /f 在筛选kaishi=0.这个有办法避免输出空内容吗?
作者: bailong360    时间: 2015-4-11 18:28

本帖最后由 bailong360 于 2015-4-11 21:20 编辑
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%i in ('findstr /s /i /m "kaishi=0" *.txt') do (
  4.     for /f "delims=" %%j in (%%~si) do set %%j
  5.     echo 标志位1
  6.     echo !start! !end! !min!
  7.     echo !num! !mode! !vip!
  8.     pause
  9. )
复制代码

作者: chouxia    时间: 2015-4-11 20:15

回复 2# bailong360


    第一行for /f 目的是筛选出含有kaishi=0的文本名字所以不能用dir代替。
作者: chouxia    时间: 2015-4-11 20:16

回复 3# chouxia


    (%%~si)
这个是什么意思?
能麻烦解释下吗?
作者: bailong360    时间: 2015-4-11 21:22

回复 4# chouxia


将%%i扩展到一个短文件名
详见call /?
作者: pcl_test    时间: 2015-4-12 14:17

问题得到解决后请在标题最前面注明[已解决]
http://www.bathome.net/thread-3473-1-1.html




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