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

[文本处理] 批处理如何遍历获取文本文件的每一行?

[复制链接]
 楼主| 发表于 2011-7-9 11:26:16 | 显示全部楼层
@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
这怎么弄啊,求高手门指点啊,自己摸索了半天也不会,数据处理量大,求指点啊

评分

参与人数 1PB -2 收起 理由
batman -2 请用code标签将代码括起

查看全部评分

发表于 2011-7-9 12:36:46 | 显示全部楼层
16# lengguoyong


请把完整的需求更新到顶楼,并给出部分文本以便测试。
 楼主| 发表于 2011-7-9 13:10:43 | 显示全部楼层
感谢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中啊
哪个大侠帮忙啊
我是批处理新手,但需要处理大量的这样数据,求助各位大侠啊
发表于 2011-7-9 13:12:57 | 显示全部楼层

  1. @Echo Off
  2. (For /F %%i In (name.txt) Do (
  3.   For /F "skip=44 delims=;" %%j In (%%i.mon) Do Echo %%j
  4. ))>new1.xls
复制代码
 楼主| 发表于 2011-7-9 13:15:00 | 显示全部楼层
最终提取1905-01-00   -999.000  -999.000 -999
这样的四列数据到excel中以便进一步的做分析啊
求助。。。。。
 楼主| 发表于 2011-7-9 13:56:34 | 显示全部楼层
ArdentMan 大哥真是个大好人啊,多谢多谢,真的非常感谢,
发表于 2011-7-10 13:30:43 | 显示全部楼层
  1. @echo off
  2. for /f "delims=" %%i in (1.txt) do echo %%i
  3. pause>nul
复制代码
发表于 2011-7-14 17:28:37 | 显示全部楼层
就楼主的问题,接着想。。怎么把这个参数在for循环中送给另一个程序作为调用参数?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 11:25 , Processed in 0.012318 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表