Board logo

标题: [文本处理] [已解决]批处理如何在文本中按每行分别提取值? [打印本页]

作者: 539956485    时间: 2012-11-16 20:21     标题: [已解决]批处理如何在文本中按每行分别提取值?

test.txt中有如下值
  1. 1453
  2. 2453
  3. 348753
  4. 47835
  5. 57
  6. 3875
  7. 6573
  8. 4532
  9. 74532
  10. 8753
  11. 97853
  12. 783
复制代码
如何把每行值分别赋值给变量
作者: tmplinshi    时间: 2012-11-16 20:43

本帖最后由 tmplinshi 于 2012-11-16 21:35 编辑
  1. @echo off
  2. for /f "delims=: tokens=1,*" %%a in (' findstr /n .* test.txt ') do (
  3.     set #%%a=%%b
  4. )
  5. set #
  6. pause
复制代码

作者: 539956485    时间: 2012-11-17 16:00

回复 2# tmplinshi
能解释下代码么
for语句提取值我懂 为什么要用:来断开
  1. findstr /n .* test.txt
复制代码
  1. set #%%a=%%b
复制代码
  1. set #
复制代码
这三段代码是什么意思?
作者: tmplinshi    时间: 2012-11-17 16:20

回复  tmplinshi
能解释下代码么
for语句提取值我懂 为什么要用:来断开这三段代码是什么意思?
539956485 发表于 2012-11-17 16:00

e:\我的文档\桌面>findstr /n .* test.txt
1:1453
2:2453
3:348753
...省略

/n 是显示行号。用冒号作为分隔符,左边作为变量名,右边为值。

set #%%a=%%b
# 只是随便一个字符,直接 set %%a=%%b 也是可以。其实我是为了给你看运行结果,用 set # 来显示 # 开头的变量。
作者: 539956485    时间: 2012-11-17 17:13

回复 4# tmplinshi


    那 find/n 和文件名之间为什么要加
  1. .*
复制代码

作者: tmplinshi    时间: 2012-11-17 17:31

回复  tmplinshi


    那 find/n 和文件名之间为什么要加
539956485 发表于 2012-11-17 17:13



必须指定要查找的字符。.* 表示任意个数的任意字符。
作者: 539956485    时间: 2012-11-17 17:57

回复 6# tmplinshi


    解决问题 ,非常感谢




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