中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-08 02:42
48,041 主题排行 / 350,128 发帖 / 今日 3 篇 / 48,253 会员排行
DOS批处理 & 脚本技术(批处理室) » [已解决]取不同目录下文本文件的特定内容
可打印版本  4,224 / 12
第1楼 bgwzlgf9610 发表于 2008-04-12 18:42
初级用户 发帖 12 积分 30
[已解决]取不同目录下文本文件的特定内容

问题是这样的:某一文件夹下有几个文件夹,每一个子文件夹下有一个名如pfen.txt或pfen.log的文本文件,里面的内容中有一行是“姓名=*** 成绩=***”,我想把这么内容都读出来,放到一个文本文件里,试了很长时间都不行,请高手帮帮忙,先谢谢了。
我只知道用以下语句读一个文件的内容:
for /f "tokens=2,3,4,5 delims=" %%a in(pfen.txt) do @echo %%~a %%~b %%~c %%~d >>chengji.txt
汗……

问题已经解决,今天上午开了一上午的会,没顾上看论坛。
再次向各位朋友的热心帮助表示感谢!!!
以下是moniuming朋友的代码,我下了后只做了简单的改动就OK了:
@echo off
type nul>"d:\chengji.txt"
for /f "delims=" %%i in ('dir /s/b/a-d "d:\pfen.log"' do (
for /f "delims=" %%j in ('findstr /i "姓名= 成绩=" "%%i"' do (
>>"d:\chengji.txt" echo %%j
)
)
type "d:\chengji.txt"
echo.&pause


修改后的代码如下,这就是我要的结果:
@echo off
type nul>"chengji.txt"
for /f "delims=" %%i in ('dir /s/b "pfen.log"' do (
for /f "delims=" %%j in ('findstr /i "姓名" "%%i"' do (
>>"chengji.txt" echo %%j
)
)
echo.&pause

[ Last edited by bgwzlgf9610 on 2008-4-15 at 02:26 PM ]
第2楼 huahua0919 发表于 2008-04-12 19:03
银牌会员 发帖 780 积分 1,608
第3楼 terse 发表于 2008-04-12 21:03
银牌会员 发帖 946 积分 2,404
@echo off
for /f "delims=" %%i in ('dir /b /s "某一文件夹下\pfen.txt"') do (
for /f "delims=" %%a in ('findstr /i "姓名=" "%%i"') do echo/%%a
)
pause
第4楼 26933062 发表于 2008-04-12 21:59
银牌会员 发帖 879 积分 2,268
楼主要求的是pfen.txt 或pfen.log文件,含子目录,
findstr 本身就提供了这个功能,不需要使用管道,只需用for过滤掉文件名即可。
:

[ Last edited by 26933062 on 2008-4-12 at 10:03 PM ]
第5楼 bgwzlgf9610 发表于 2008-04-13 07:26
初级用户 发帖 12 积分 30
坛子里的朋友真是太热心了!
真的是非常感谢,别的话也不多说了……
有了朋友们的这些提示,相信我会完成这个工作的!!!
再次表示感谢。
第6楼 bgwzlgf9610 发表于 2008-04-13 12:13
初级用户 发帖 12 积分 30
再一次麻烦大家,我的问题描述不对。用朋友们提供的方法都不能实现,在这里表示歉意。汗……
具体如下:
我的目录结构如下:
主目录→形如k01、k02、k03……k60等这样的目录→在以上每一个目录下又有好多形如601030700***这样的目录→在这样的目录,每一个里面都有pfen.txt或penf.log这样的文本文件,我想把这里面的姓名、成绩这一行的内容都读到一个文本文件里。

这回应该清楚了,再一次表示歉意,让大家做了很多无用功。
我的设计思路:
先用循环转到k01这样的目录里,再在所有的子目录里找pfen.tx或tpfen.log这样的文本文件,读出里面需要的内容,放在根目录下一个文本文件里。重复60遍就可以了。具体的批处理文件内容,由于本人水平有限就不放在这里现眼了。

[ Last edited by bgwzlgf9610 on 2008-4-13 at 12:23 PM ]
第7楼 terse 发表于 2008-04-13 12:53
银牌会员 发帖 946 积分 2,404
@echo off
for /f "delims=" %%i in ('findstr /mis "姓名=" pfen.txt pfen.log') do (
for /f "delims=" %%a in ('findstr /i "姓名=" ".\%%i"') do >>目录根文件.txt echo/%%a
)
pause
第8楼 26933062 发表于 2008-04-13 13:56
银牌会员 发帖 879 积分 2,268
姓名 和 成绩 是不在一行上吗?
:
第9楼 bgwzlgf9610 发表于 2008-04-13 16:39
初级用户 发帖 12 积分 30
按照朋友们的程序思路试了很多方法,还是不行,根本就没有任何内容可以记录到文本文件中,我已经将我要统计的目录结构上传了,地址如下:
http://upload.cn-dos.net/img/264.txt
我要做的就是将每一个考生目录下的pfen.log里,有一行是显示考生信息和成绩的保存到当前根目录下的"cj.txt"里。
具体如下:
1、自动进到k01,然后到该目录下查找601030700***、601030700***等这样的考生目录下的pfen.log里的考生信息和成绩,放到根目录下的"cj.txt"里;
2、再自动进到k02,重复以上步骤,直到全部60个目录统计完成。
说明:
k01~k60是服务器上建的60台学生机的工作目录,每个目录下的601030700***这样的目录是学生在相应学生机上考试时用的考号自动建立的目录,如k01\601030700123就表示k01这台计算机上,考号是601030700123的考生的工作目录,而k01\601030700456则表示k01这台计算机上,考号是601030700456的考生的工作目录
真的麻烦朋友们了,明天就要统计结果,我要是一个目录一个目录地统计,肯定完成不了任务。
又得挨领导批评了


刚看了目录结构发现,我弄错了,成绩只用pfen.log记录,没有pfeng.txt,再次表示歉意。

[ Last edited by bgwzlgf9610 on 2008-4-13 at 04:42 PM ]
第10楼 bgwzlgf9610 发表于 2008-04-13 17:15
初级用户 发帖 12 积分 30
用参数/r来代替/f是否可以解决这个问题,我先试一下。
第11楼 26933062 发表于 2008-04-13 18:06
银牌会员 发帖 879 积分 2,268
楼主的问题一变再变,
暂不关注此帖。
第12楼 bgwzlgf9610 发表于 2008-04-13 18:29
初级用户 发帖 12 积分 30
还是不行,弄得头都大了,先休息一下吧。
先谢谢各位朋友了
第13楼 moniuming 发表于 2008-04-13 18:59
银牌会员 发帖 574 积分 1,335 来自 广西
没测试
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023