批处理提取txt文本文件的数据 20
例如:BACK.txt文本文件下的内容为A列B列C列D列E列F列G列H列I列……(150列,数据均不相同)01行026252011010103183102906513……...
例如:BACK.txt文本文件下的内容为
A列 B列 C列 D列 E列 F列 G列 H列 I列……(150列,数据均不相同)
01行 02625 2011 01 01 03 183 10290 65 13 ……
02行 02625 2011 01 01 06 198 10195 69 15……
03行 02625 2011 01 01 09 203 10295 75 18 ……
04行 02625 2011 01 01 12 193 10198 67 14 ……
05行 02625 2011 01 01 15 198 10192 77 16 ……
06行 02625 2011 01 01 18 203 10098 65 19 ……
07行 02625 2011 01 01 21 183 10058 78 17 ……
08行 02625 2011 01 01 24 197 10190 80 20 ……
09行 02625 2011 01 02 03 163 11290 75 23 ……
10行 02625 2011 01 02 06 188 10135 59 19……
11行 02625 2011 01 02 09 193 10195 55 16 ……
12行 02625 2011 01 02 12 143 10138 87 10 ……
13行 02625 2011 01 02 15 108 10002 57 26 ……
14行 02625 2011 01 02 18 207 10198 85 29 ……
15行 02625 2011 01 02 21 153 10158 58 27 ……
16行 02625 2011 01 02 24 191 10193 85 23 ……
.
.
.
(15000行)
由于数据量相当多,目的是要提取其中部分“列”的内容到“行”,如:
02065 2011 01 01 198 193 203 197
02065 2011 01 02 188 143 207 191
.
.
.
上文的意思是:
提取A列02行的02625 B列02行的2011 C列02行的01 D列02行的01 F列02行的183 F列04行的193 F列06行的203 F列08行的193(换行)
提取A列10行的02625 B列10行的2011 C列10行的01 D列10行的02 F列10行的188 F列12行的143 F列14行的207 F列16行的191(换行)
.
.
.
也就是要提取每天06、12、18、24这几个时次的数据,直至提取到第15000行止,并将该文件命名为1.txt。然后再按照上述方法分别提取G列的
数据,直至提取到第15000行止,并将该文件命名为2.txt。(2.txt部分内容见下面)
02065 2011 01 01 10195 10198 10098 10190
02065 2011 01 02 10135 10138 10198 10193
.
.
.
按照上述方法直至提取到150列止,即生成150个txt文件,此任务即结束。其中,“列”和“行”是为了表述需要而自己加上的,原文中并没有
这些东西。看各为大侠能否帮忙解决,急急急!!!如果批处理解决不了,能否有其他什么好办法吗?总不能手工一行一行的录入吧,如果这
样的话,不吃不喝不睡估计也得个一年半载的时间不可。 展开
A列 B列 C列 D列 E列 F列 G列 H列 I列……(150列,数据均不相同)
01行 02625 2011 01 01 03 183 10290 65 13 ……
02行 02625 2011 01 01 06 198 10195 69 15……
03行 02625 2011 01 01 09 203 10295 75 18 ……
04行 02625 2011 01 01 12 193 10198 67 14 ……
05行 02625 2011 01 01 15 198 10192 77 16 ……
06行 02625 2011 01 01 18 203 10098 65 19 ……
07行 02625 2011 01 01 21 183 10058 78 17 ……
08行 02625 2011 01 01 24 197 10190 80 20 ……
09行 02625 2011 01 02 03 163 11290 75 23 ……
10行 02625 2011 01 02 06 188 10135 59 19……
11行 02625 2011 01 02 09 193 10195 55 16 ……
12行 02625 2011 01 02 12 143 10138 87 10 ……
13行 02625 2011 01 02 15 108 10002 57 26 ……
14行 02625 2011 01 02 18 207 10198 85 29 ……
15行 02625 2011 01 02 21 153 10158 58 27 ……
16行 02625 2011 01 02 24 191 10193 85 23 ……
.
.
.
(15000行)
由于数据量相当多,目的是要提取其中部分“列”的内容到“行”,如:
02065 2011 01 01 198 193 203 197
02065 2011 01 02 188 143 207 191
.
.
.
上文的意思是:
提取A列02行的02625 B列02行的2011 C列02行的01 D列02行的01 F列02行的183 F列04行的193 F列06行的203 F列08行的193(换行)
提取A列10行的02625 B列10行的2011 C列10行的01 D列10行的02 F列10行的188 F列12行的143 F列14行的207 F列16行的191(换行)
.
.
.
也就是要提取每天06、12、18、24这几个时次的数据,直至提取到第15000行止,并将该文件命名为1.txt。然后再按照上述方法分别提取G列的
数据,直至提取到第15000行止,并将该文件命名为2.txt。(2.txt部分内容见下面)
02065 2011 01 01 10195 10198 10098 10190
02065 2011 01 02 10135 10138 10198 10193
.
.
.
按照上述方法直至提取到150列止,即生成150个txt文件,此任务即结束。其中,“列”和“行”是为了表述需要而自己加上的,原文中并没有
这些东西。看各为大侠能否帮忙解决,急急急!!!如果批处理解决不了,能否有其他什么好办法吗?总不能手工一行一行的录入吧,如果这
样的话,不吃不喝不睡估计也得个一年半载的时间不可。 展开
3个回答
展开全部
我不太明白
{
也就是要提取每天06、12、18、24这几个时次的数据,直至提取到第15000行止,并将该文件命名为1.txt。然后再按照上述方法分别提取G列的
数据,直至提取到第15000行止,并将该文件命名为2.txt。(2.txt部分内容见下面)
02065 2011 01 01 10195 10198 10098 10190
02065 2011 01 02 10135 10138 10198 10193
}
1.[每天06、12、18、24这几个时次的数据] 是指行吗,如果不是,行数的规律是什么
2.[然后再按照上述方法分别提取G列的] 列数有规律吗,什么规律
{
按照上述方法直至提取到150列止,即生成150个txt文件,此任务即结束。其中,“列”和“行”是为了表述需要而自己加上的,原文中并没有
}
3.[按照上述方法直至提取到150列止,即生成150个txt文件] 哪一百五十列??
{
也就是要提取每天06、12、18、24这几个时次的数据,直至提取到第15000行止,并将该文件命名为1.txt。然后再按照上述方法分别提取G列的
数据,直至提取到第15000行止,并将该文件命名为2.txt。(2.txt部分内容见下面)
02065 2011 01 01 10195 10198 10098 10190
02065 2011 01 02 10135 10138 10198 10193
}
1.[每天06、12、18、24这几个时次的数据] 是指行吗,如果不是,行数的规律是什么
2.[然后再按照上述方法分别提取G列的] 列数有规律吗,什么规律
{
按照上述方法直至提取到150列止,即生成150个txt文件,此任务即结束。其中,“列”和“行”是为了表述需要而自己加上的,原文中并没有
}
3.[按照上述方法直至提取到150列止,即生成150个txt文件] 哪一百五十列??
更多追问追答
追问
在这里首先谢谢你的帮助!要么把上面的问题简化一下,只要能提取F列的06、12、18、24时次的数据就行,其他列数据的提取就可以参照F列。F列提取的数据格式为:
02065 2011 01 01 198 193 203 197
02065 2011 01 02 188 143 207 191
也就是把原来每天8行的数据转换成现在1行的数据,前面的代号相同,年月日不相同,去掉原来的时次,直接在后面跟上06、12、18、24时次相对应的数据即可。
追答
06时次是指第六行吗??如果不是,怎么区分时次
展开全部
这问题批处理是不难解决的,提问描述不太好让人难懂...
@echo off
for /l %%n in (1,1,150)do if exist %%n.txt del %%n.txt
for /f "tokens=1-5*" %%a in (back.txt)do (
for %%g in (06 12 18 24)do if "%%e"=="%%g" (
if "%%e"=="06" (
echo %%a %%b %%c %%d %%e ...
set hb=%%a %%b %%c %%d)else set "hb="
if "%%e"=="24" (set he=y)else set "he="
call :yky %%f
))
pause
goto :eof
:yky
if "%1"=="" set n=&goto :eof
set/a n+=1
(set/p=%hb% %1<nul
if defined he echo/)>>%n%.txt
shift&goto :yky
@echo off
for /l %%n in (1,1,150)do if exist %%n.txt del %%n.txt
for /f "tokens=1-5*" %%a in (back.txt)do (
for %%g in (06 12 18 24)do if "%%e"=="%%g" (
if "%%e"=="06" (
echo %%a %%b %%c %%d %%e ...
set hb=%%a %%b %%c %%d)else set "hb="
if "%%e"=="24" (set he=y)else set "he="
call :yky %%f
))
pause
goto :eof
:yky
if "%1"=="" set n=&goto :eof
set/a n+=1
(set/p=%hb% %1<nul
if defined he echo/)>>%n%.txt
shift&goto :yky
更多追问追答
追问
在此首先谢谢你的帮助,我到单位测试一下,如果有什么疑问的话,还得向你请教……另外,想请你在部分难懂的地方加个注解好吗?谢谢!!!
追答
就思路/步骤 说一下,代码有疑问可 Hi 留言
1 批处理文件需要放要处理文件同位置
2 如果存在文件1.txt 2.txt....150.txt会先删除
3 逐行读取back.txt文件进行处理,取第5列 (%%a代表第1列...%%e代表第5列 %%f代表第5列之后的所有列)数据判断是否为06 12 18 24这几种进行处理,“06”时需要1-4列数据,为“24”时需换行
4 call :yky %%f 就是把第六列及之后的数据传给“子过程”:yky 去处理
5 这个过程是个不定次数的循环,用%1取传过来的第1个数(如果用%2将取第2个数)
shift将使传来的数据被“左移”,即原%2代表的数变成用%1来取,循环结束条件就是当最后一项也被"移"成空时
每循环一次,写入的文件序号n增1,结束循环时将序号清空 (原文件是逐行处理的,这子过程就是处理一行的数据)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
试试保存为 cvs 文件 导入excel
建议你学习AutoIt脚本 编程 来处理
建议你学习AutoIt脚本 编程 来处理
追问
已经导入到EXCEL了,但是无法完成数据的提取?我想只有通过编程来完成这项任务了,谢谢!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询