标题: [文本处理] 批处理如何获取文本每一行中第几列/指定列的内容 [打印本页]
作者: terryno 时间: 2018-3-16 10:38 标题: 批处理如何获取文本每一行中第几列/指定列的内容
本帖最后由 pcl_test 于 2018-3-16 14:53 编辑
求助,bat取文本中的第n个数值进行显示
要取文本中第54个字段显示,可是bat,超过了31就直接不取数了,有啥办法能取到第54的数吗?下面的例子中我想把tokens写成1-64,然后echo 54:%%54
希望大神解救
for /f " tokens=1-31 delims=," %%1 in (%GET_FILE%) do (
echo ----------------------
echo 1:%%1
echo ----------------------
作者: WHY 时间: 2018-3-16 12:39
一种办法是分段获取,像这样:- @echo off
- for /f "tokens=31* delims=," %%i in (1.txt) do (
- for /f "tokens=23 delims=," %%k in ("%%j") do echo;%%k
- )
- pause
复制代码
其中 31+23 = 54
另一种办法是计数,像这样:- @echo off
- for /f "delims=" %%i in (1.txt) do (
- set n=0
- for %%j in (%%i) do (
- set /a n+=1, "1/(n-54)" || echo;%%j
- )
- )
- pause
复制代码
作者: yhcfsr 时间: 2018-3-16 14:27
利用两个临时文件可做到。- copy /y "%GET_FILE%" "temp1.txt" >nul
-
- :lp
- set/a n+=1
- if %n%==54 (
- for /f "delims= " %%a in (temp1.txt) do echo %n%:%%a
- del /f /q temp*.txt&pause&goto:eof
- )
- (type temp1.txt)>temp.txt&&(for /f "tokens=1,* delims= " %%a in (temp.txt) do echo %%b)>temp1.txt
- goto :lp
复制代码
作者: terryno 时间: 2018-3-16 15:02
回复 2# WHY
感谢,用第一个实现了我的目的,能详细说下是怎么实现的吗?为什么先到了31,然后能往后寻找数据呢?
作者: WHY 时间: 2018-3-16 19:30
回复 4# terryno
批处理 for /f 中的 tokens 最大可取的数值为 31,for /f 最多能分割的列数为 32
第一个 for 把第 31 列赋值给 %%i,第 31 列之后的字符串(当成第 32 列)赋值给 %%j
第二个 for 把第 32 列再次分割,第 23 列赋值给 %%k
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |