![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-12 03:34 |
共 47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 批处理按条件获取TXT文件内容(已解决)感谢Hanyeguxing |
| 可打印版本 2,163 / 22 |
| 第1楼 wmysbbs | 发表于 2009-06-25 10:32 |
| 初级用户 发帖 52 积分 172 | |
|
批处理按条件获取TXT文件内容(已解决)感谢Hanyeguxing 有个问题请教一下
A.TXT文本内容: 状态 游戏名称 开始时间 结束时间 下载版本 任务说明 成功 地下城与勇士 20090625 14:23:40 2009 成功 特种部队 20090625 15:08:13 2009 成功 FIFA Online2 20090625 15:25:19 2009 成功 机战Online 20090625 15:41:31 2009 成功 大话西游 20090625 15:49:55 2009 成功 跑跑卡丁车 20090628 15:42:58 2009 功能要求应该是这样: 读取A.txt的内容,把日期为今天的和显示"成功"的都输出到 今天更新.txt里面,只要第二个字段就可以了,也就是游戏名 然后再根据 今天更新.txt 执行xcopy 问题解决了,在18楼,感谢Hanyeguxing的热心帮助 最终代码 @echo off&&setlocal enabledelayedexpansion set datais=C:\ del !datais!今天更新.txt /f /q>nul 2>nul del !datais!更新对比.bat /f /q>nul 2>nul set han=%date:~0,4%%date:~5,2%%date:~8,2% For /f "skip=1 tokens=1-3 delims=," %%a in (!datais!A.txt) do ( set gu=%%a set ye=%%b For /f "tokens=1-3 delims=- " %%i in ("%%c") do ( set str1=0%%j set str2=0%%k set xing=%%i!str1:~-2!!str2:~-2! ) if "!gu!" == "成功" if "!xing!" == "!han!" ( @Echo xcopy F:\更多网游\!ye!\*.* H:\更多网游\!ye!\ /s/y/d/e >>!datais!更新对比.bat @Echo xcopy F:\更多网游\!ye!\*.* K:\更多网游\!ye!\ /s/y/d/e >>!datais!更新对比.bat @Echo xcopy F:\更多网游\!ye!\*.* N:\更多网游\!ye!\ /s/y/d/e >>!datais!更新对比.bat @Echo xcopy F:\更多网游\!ye!\*.* Q:\更多网游\!ye!\ /s/y/d/e >>!datais!更新对比.bat ) ) @Echo exit >>!datais!更新对比.bat start !datais!更新对比.bat pause [ Last edited by wmysbbs on 2009-6-25 at 13:45 ] |
|
| 第2楼 Hanyeguxing | 发表于 2009-06-25 11:12 |
| 银牌会员 发帖 897 积分 1,039 来自 在地狱中仰望天堂 | |
|
你的方法行不通,也许你的意思是要写成
但这会过滤掉 成功 FIFA Online2 20090625 15:25:19 2009 这一行的。 所以,你要弄清楚“成功 FIFA Online2 20090625 15:25:19 2009”这行中,每一段的分隔符都是什么。 如果都是空格,那就需要想别的办法了 最好把你要处理的txt 文本文件打包压缩上传上来,大家好分析 [ Last edited by Hanyeguxing on 2009-6-25 at 11:20 ] |
|
| 第3楼 wmysbbs | 发表于 2009-06-25 11:15 |
| 初级用户 发帖 52 积分 172 | |
|
收到,这样是不是只能输入五行
|
|
| 第4楼 wmysbbs | 发表于 2009-06-25 11:16 |
| 初级用户 发帖 52 积分 172 | |
|
我刚查了资料,改了一下,不过这段代码杂了,但还是可以实现我要的功能
@echo off&&setlocal enabledelayedexpansion set datais=C:\ if exist !datais!今天更新.txt del !datais!今天更新.txt/f/q :::::作用,取得A.txt内容,将日期格式改为00001122 For /f "tokens=1-3 delims=-" %%i in (!datais!A.txt) do ( set str1=%%j set str2=%%k if "!str1:~1!"=="" set str1=0!str1! if "!str2:~1!"=="" set str2=0!str2! echo %%i-!str1!-!str2! >>!datais!B.txt ) :::::作用,取得B.txt内容,将,号和-号清除 For /f "tokens=*" %%a in (!datais!B.txt) do ( set var=%%a set "var=!var:,= !" set "var=!var:-=!" >>!datais!更新.txt echo !var! ) :::::作用,取得当前日期,输出包含当前日期的内容 @echo %date:~0,4%%date:~5,2%%date:~8,2% >>!datais!当前日期.txt for /f "delims=" %%a in (!datais!当前日期.txt) do ( type !datais!更新.txt |findstr "%%a">!datais!今天更新.txt ) del !datais!当前日期.txt/f/q del !datais!更新.txt/f/q del !datais!B.txt/f/q pause |
|
| 第5楼 wmysbbs | 发表于 2009-06-25 11:23 |
| 初级用户 发帖 52 积分 172 | |
|
呵呵,有高手帮我简化就好了
下面要实现的就是根据“今天更新.txt“的内容来运行程序 比如: xcopy E:\地下城与勇士\*.* F:\地下城与勇士\ /s/y/d/e ”地下城与勇士“这个内容就是根据"今天更新.txt"里面的内容获得,是变量,按每一行内容执行xcpoy |
|
| 第6楼 Hanyeguxing | 发表于 2009-06-25 11:25 |
| 银牌会员 发帖 897 积分 1,039 来自 在地狱中仰望天堂 | |
|
给你简化一下看看。。。
最好把整个思路说清楚。。。 最后的2009是干什么用的? [ Last edited by Hanyeguxing on 2009-6-25 at 11:37 ] |
|
| 第7楼 wmysbbs | 发表于 2009-06-25 11:26 |
| 初级用户 发帖 52 积分 172 | |
|
感动。。。。
|
|
| 第8楼 wmysbbs | 发表于 2009-06-25 11:27 |
| 初级用户 发帖 52 积分 172 | |
|
这是A.txt最原始的内容
状态,游戏名称,开始时间,结束时间,下载版本,任务说明 成功,地下城与勇士,2009-6-25 14:23:40,2009-6-25 14:26:34,V2.42_RC3,已升级成功 成功,特种部队,2009-6-25 15:08:13,2009-6-25 15:10:22,V10119,已升级成功 成功,FIFA Online2,2009-6-25 15:25:19,2009-6-25 15:32:20,V1.0.1.6,已升级成功 成功,机战Online,2009-6-25 15:41:31,2009-6-25 15:55:39,V3200,已升级成功 成功,大话西游,2009-6-25 15:49:55,2009-6-25 15:57:58,V2.0.237,已升级成功 成功,跑跑卡丁车,2009-6-25 15:42:58,2009-6-25 16:00:02,P590,已升级成功 成功,QQTang,2009-6-25 20:58:25,2009-6-25 21:00:06,V3.2,已升级成功 成功,QQ魔域,2009-6-25 21:08:58,2009-6-25 21:10:13,V5183,已升级成功 成功,QQ音速,2009-6-25 21:10:18,2009-6-25 21:15:58,V2.1.7,已升级成功 成功,大话西游3,2009-6-25 21:15:55,2009-6-25 21:21:44,V3.0.115,已升级成功 成功,疯狂赛车,2009-6-25 21:21:44,2009-6-25 21:28:15,V2009060800,已升级成功 成功,街头篮球,2009-6-25 21:28:05,2009-6-25 21:32:24,V1.0.1.0,已升级成功 成功,QQ飞车,2009-6-25 20:44:56,2009-6-25 22:04:03,V56,已升级成功 成功,FIFA Online2,2009-6-25 22:02:25,2009-6-25 22:09:56,V1.0.1.6,已升级成功 |
|
| 第9楼 wmysbbs | 发表于 2009-06-25 11:28 |
| 初级用户 发帖 52 积分 172 | |
|
其实这里已经有,分隔符,只是我不会按这个分隔符获取内容
|
|
| 第10楼 wmysbbs | 发表于 2009-06-25 11:30 |
| 初级用户 发帖 52 积分 172 | |
|
最后得到的“今天更新.txt”的内容如下
成功 地下城与勇士 20090625 14:23:40 2009 成功 特种部队 20090625 15:08:13 2009 成功 FIFA Online2 20090625 15:25:19 2009 成功 机战Online 20090625 15:41:31 2009 成功 大话西游 20090625 15:49:55 2009 成功 跑跑卡丁车 20090625 15:42:58 2009 成功 QQTang 20090625 20:58:25 2009 成功 QQ魔域 20090625 21:08:58 2009 成功 QQ音速 20090625 21:10:18 2009 成功 大话西游3 20090625 21:15:55 2009 成功 疯狂赛车 20090625 21:21:44 2009 成功 街头篮球 20090625 21:28:05 2009 成功 QQ飞车 20090625 20:44:56 2009 成功 FIFA Online2 20090625 22:02:25 2009 |
|
| 第11楼 wmysbbs | 发表于 2009-06-25 11:37 |
| 初级用户 发帖 52 积分 172 | |
Originally posted by Hanyeguxing at 2009-6-25 11:25 AM: 呵呵,太谢谢你了,我也去多查点资料!! 今天又是有收获 |
|
| 第12楼 Hanyeguxing | 发表于 2009-06-25 12:19 |
| 银牌会员 发帖 897 积分 1,039 来自 在地狱中仰望天堂 | |
|
你看一下。。。 [ Last edited by Hanyeguxing on 2009-6-25 at 12:43 ] |
|
| 第13楼 wmysbbs | 发表于 2009-06-25 12:32 |
| 初级用户 发帖 52 积分 172 | |
|
哈哈,感谢!!这代码简单了好多!!
|
|
| 第14楼 wmysbbs | 发表于 2009-06-25 12:35 |
| 初级用户 发帖 52 积分 172 | |
|
set真好用!!!
我只要今天更新.txt里面的内容是第二个字段的可以吗 地下城与勇士 特种部队 ...... |
|
| 第15楼 Hanyeguxing | 发表于 2009-06-25 12:47 |
| 银牌会员 发帖 897 积分 1,039 来自 在地狱中仰望天堂 | |
|
没明白你的意思:
你是说由A.txt 直接经过时间过滤出来,在今日更新.txt不要其他字段了。 还是对今日更新.txt再处理? 如果从A.txt开始做简单。。。。 要在一个帖子里把问题说清楚! |
|
| 1 2 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |