![]() |
中国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 |