标题: [其他] 【已解决】批处理命令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
需求
采集=号后面的内容进入变量。
代码如下:- @echo off
- setlocal enabledelayedexpansion
- for /f %%z in ('findstr /s /i /m "kaishi=0" *.txt') do (
- for /f "tokens=1,* delims==" %%a in ('find "num" ^< %%z') do (set num=%%b)
- for /f "tokens=1,* delims==" %%c in ('find "mode" ^< %%z') do (set mode=%%d)
- for /f "tokens=1,* delims==" %%e in ('find "vip" ^< %%z') do (set vip=%%f)
- for /f "tokens=1,2,3,* delims==, " %%g in ('find "duan" ^< %%z') do (
- set start=%%h
- set end=%%i
- set min=%%j
- echo 标志位1
- echo !start! !end! !min!
- echo !num! !mode! !vip!
- pause
- goto main
- ))
复制代码
输出结果不满意,
第一次循环,所有变量都没有获取内容
第二次开始循环能采集到kaishi num mode vip的数据。但start end min始终不行。
哪位高人给个建议哈。
第一次循环没有数据是因为第一个for /f 在筛选kaishi=0.这个有办法避免输出空内容吗?
作者: bailong360 时间: 2015-4-11 18:28
本帖最后由 bailong360 于 2015-4-11 21:20 编辑
- @echo off
- setlocal enabledelayedexpansion
- for /f "delims=" %%i in ('findstr /s /i /m "kaishi=0" *.txt') do (
- for /f "delims=" %%j in (%%~si) do set %%j
- echo 标志位1
- echo !start! !end! !min!
- echo !num! !mode! !vip!
- pause
- )
复制代码
作者: 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 |