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

[文本处理] [已解决]批处理如何在文本中按每行分别提取值?

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
复制代码
如何把每行值分别赋值给变量
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2
无所谓而无所为 无所谓而无所不为

本帖最后由 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
复制代码
1

评分人数

TOP

回复 2# tmplinshi
能解释下代码么
for语句提取值我懂 为什么要用:来断开
  1. findstr /n .* test.txt
复制代码
  1. set #%%a=%%b
复制代码
  1. set #
复制代码
这三段代码是什么意思?
无所谓而无所为 无所谓而无所不为

TOP

回复  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 # 来显示 # 开头的变量。

TOP

回复 4# tmplinshi


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

TOP

回复  tmplinshi


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



必须指定要查找的字符。.* 表示任意个数的任意字符。

TOP

回复 6# tmplinshi


    解决问题 ,非常感谢
无所谓而无所为 无所谓而无所不为

TOP

返回列表