标题: [文本处理] 批处理如何遍历获取文本文件的每一行? [打印本页]
作者: lengguoyong 时间: 2011-7-9 08:14 标题: 批处理如何遍历获取文本文件的每一行?
我有一个文本文件,每行都有一个7位数的数据,我如何能遍历获取该文本的每一行呢,文本内容;
1112200
1112300
1112320
1112340
1112350
1134050
1134100
1134110
1134200
作者: ArdentMan 时间: 2011-7-9 08:53
- @Echo Off
- For /F %%a in (a.txt) Do Echo %%a
- Pause>Nul
复制代码
作者: lengguoyong 时间: 2011-7-9 09:12
谢谢ArdentMan的回答,可能我没说清楚我的意思,我想依次获取每一行数据,来作为下一步操作的参数,但怎么样能单个的获取每一行的数据啊,
作者: ArdentMan 时间: 2011-7-9 09:18
在上面的代码中%%a不是Echo的参数吗?
作者: lengguoyong 时间: 2011-7-9 09:24
那怎样才能获取其中的一列数据呢,比如第五列
作者: lengguoyong 时间: 2011-7-9 09:24
说错了是第五行
作者: ArdentMan 时间: 2011-7-9 09:31
- @Echo Off
- For /F "tokens=1* delims=:" %%i In ('Findstr /n .* a.txt') Do Set "_%%i=%%j"
- Echo %_5%
- Pause>Nul
复制代码
作者: lengguoyong 时间: 2011-7-9 09:43
谢谢ArdentMan 大哥,帮了我的大忙,非常感谢,但我看不懂 ,ArdentMan 大哥能解释下代码么
作者: lengguoyong 时间: 2011-7-9 09:46
如果想设计个循环,比如获取第五行到第十行的数据,怎么弄呢
作者: ArdentMan 时间: 2011-7-9 09:59
- @Echo Off&SetLocal EnableDelayedExpansion
- For /F "tokens=1* delims=:" %%i In ('Findstr /n .* a.txt') Do Set "_%%i=%%j"
- For /L %%a in (5,1,10) Do Echo !_%%a!
- Pause>Nul
复制代码
作者: lengguoyong 时间: 2011-7-9 10:10
谢谢ArdentMan大哥,但为啥运行时第五个到第九个的数据能显示,但第十个没显示,提示说是 echo处于关闭状态啊
作者: lengguoyong 时间: 2011-7-9 10:11
奥 是我弄错了 ,不好意思,非常谢谢ArdentMan 大哥,
作者: batman 时间: 2011-7-9 10:11
楼主,你自己想想为啥,不要什么都问可以?
作者: lengguoyong 时间: 2011-7-9 10:25
batman 大哥批评的对,但我要处理大量的数据,批处理还没学会,暂时只好求助了啊
作者: batman 时间: 2011-7-9 11:14
14# lengguoyong
我是指的你连行数都没搞清楚的这个问题。。。
作者: lengguoyong 时间: 2011-7-9 11:26
@Echo Off
For /F "tokens=1* delims=:" %%i In ('Findstr /n .* name.txt') Do Set "_%%i=%%j"
set q= %_2%
for /f "skip=44 tokens=1 delims=;" %%i in (%q%.mon) do echo %%i>>new1.xls
这段代码是提取name.txt中的第二行数据,并以获取的第二行数据为文件名变量执行for /f "skip=44 tokens=1 delims=;" %%i in (%q%.mon) do echo %%i>>new1.xls
但我想弄个循环,就是循环读取name.txt中的每行数据,并执行for /f "skip=44 tokens=1 delims=;" %%i in (%q%.mon) do echo %%i>>new1.xls
这怎么弄啊,求高手门指点啊,自己摸索了半天也不会,数据处理量大,求指点啊
作者: Batcher 时间: 2011-7-9 12:36
16# lengguoyong
请把完整的需求更新到顶楼,并给出部分文本以便测试。
作者: lengguoyong 时间: 2011-7-9 13:10
感谢Batcher 的提点,是这样的,我有一个文本name.txt,里面包含了很多文件的名称,如下:
1112200
1112300
1112320
1112340
1112350
1134050
1134100
1134110
每个对应的文件内的数据比如1112200.txt的内容如下
# Title: GRDC STATION DATA FILE
# --------------
# Format: DOS-ASCII
# Date format: YYYY-MM-DD; YYYY-MM; YYYY; MM
# Field delimiter: ;
#
# file generation data: 2011-07-07
#
# GRDC-No.: 1112300
# River: SENEGAL
# Station: GALOUGO
# Country: ML
# Latitude (dec. ?: 13.830000
# Longitude (de. ?: -11.130000
# Catchment area (km?: 127000.000
# Altitude (m.a.s.l): 69.00
# Next d/s station: 1112100
# Remarks:
#************************************************************
#
# Data Set Content: MEAN MONTHLY DISCHARGE
# --------------------
# Unit: m?s
# Time series: 1905 - 1990
# No. of years: 86
# Last update: 1992-06-26
#
# Table Header:
# YYYY-MM-DD - Date (DD=00)
# hh:mm - Time
# Original - original (provided) data
# Calculated - GRDC modified data
# Flag - modification flag
# -999 - missing data, no correction
# 300+n - n = number of missing values, when determined from mean daily discharge
# 99 - usage not recommended by the provider
# 100 - corrected data, no methode specified
#
# Data lines: 1032
# DATA
YYYY-MM-DD;hh:mm; Original; Calculated; Flag
1905-01-00;--:--; -999.000; -999.000; -999
1905-02-00;--:--; -999.000; -999.000; -999
1905-03-00;--:--; -999.000; -999.000; -999
1905-04-00;--:--; -999.000; -999.000; -999
1905-05-00;--:--; 14.000; -999.000; -999
1906-01-00;--:--; 155.000; -999.000; -999
我就是想通过name.txt依次获取文件名。然后对该文件提取其中的
1905-01-00;--:--; -999.000; -999.000; -999
1905-02-00;--:--; -999.000; -999.000; -999
1905-03-00;--:--; -999.000; -999.000; -999
1905-04-00;--:--; -999.000; -999.000; -999
1905-05-00;--:--; 14.000; -999.000; -999
1906-01-00;--:--; 155.000; -999.000; -999
这几列数据。并输出到excel中啊
哪个大侠帮忙啊
我是批处理新手,但需要处理大量的这样数据,求助各位大侠啊
作者: ArdentMan 时间: 2011-7-9 13:12
- @Echo Off
- (For /F %%i In (name.txt) Do (
- For /F "skip=44 delims=;" %%j In (%%i.mon) Do Echo %%j
- ))>new1.xls
复制代码
作者: lengguoyong 时间: 2011-7-9 13:15
最终提取1905-01-00 -999.000 -999.000 -999
这样的四列数据到excel中以便进一步的做分析啊
求助。。。。。
作者: lengguoyong 时间: 2011-7-9 13:56
ArdentMan 大哥真是个大好人啊,多谢多谢,真的非常感谢,
作者: Hello123World 时间: 2011-7-10 13:30
- @echo off
- for /f "delims=" %%i in (1.txt) do echo %%i
- pause>nul
复制代码
作者: yanziyanzi 时间: 2011-7-14 17:28
就楼主的问题,接着想。。怎么把这个参数在for循环中送给另一个程序作为调用参数?
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |