|
wmysbbs
初级用户
积分 172
发帖 52
注册 2005-3-29
状态 离线
|
『楼 主』:
批处理按条件获取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 ]
|
|
2009-6-25 10:32 |
|
|
Hanyeguxing
银牌会员
正在学习中的菜鸟...
积分 1039
发帖 897
注册 2009-3-1 来自 在地狱中仰望天堂
状态 离线
|
『第
2 楼』:
你的方法行不通,也许你的意思是要写成
@echo off
For /f "skip=1 tokens=1,2,3,4,5*" %%a In (更新.txt) Do (
if "%%c" == "%date:~0,4%%date:~5,2%%date:~8,2%" echo %%a %%b %%c %%d %%e >>更新2.txt
) 但这会过滤掉
成功 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 ]
|
批处理之家 http://bbs.bathome.net/forum-5-1.html |
|
2009-6-25 11:12 |
|
|
wmysbbs
初级用户
积分 172
发帖 52
注册 2005-3-29
状态 离线
|
|
2009-6-25 11:15 |
|
|
wmysbbs
初级用户
积分 172
发帖 52
注册 2005-3-29
状态 离线
|
『第
4 楼』:
我刚查了资料,改了一下,不过这段代码杂了,但还是可以实现我要的功能
@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
|
|
2009-6-25 11:16 |
|
|
wmysbbs
初级用户
积分 172
发帖 52
注册 2005-3-29
状态 离线
|
『第
5 楼』:
呵呵,有高手帮我简化就好了
下面要实现的就是根据“今天更新.txt“的内容来运行程序
比如:
xcopy E:\地下城与勇士\*.* F:\地下城与勇士\ /s/y/d/e
”地下城与勇士“这个内容就是根据"今天更新.txt"里面的内容获得,是变量,按每一行内容执行xcpoy
|
|
2009-6-25 11:23 |
|
|
Hanyeguxing
银牌会员
正在学习中的菜鸟...
积分 1039
发帖 897
注册 2009-3-1 来自 在地狱中仰望天堂
状态 离线
|
|
2009-6-25 11:25 |
|
|
wmysbbs
初级用户
积分 172
发帖 52
注册 2005-3-29
状态 离线
|
|
2009-6-25 11:26 |
|
|
wmysbbs
初级用户
积分 172
发帖 52
注册 2005-3-29
状态 离线
|
『第
8 楼』:
这是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,已升级成功
|
|
2009-6-25 11:27 |
|
|
wmysbbs
初级用户
积分 172
发帖 52
注册 2005-3-29
状态 离线
|
『第
9 楼』:
其实这里已经有,分隔符,只是我不会按这个分隔符获取内容
|
|
2009-6-25 11:28 |
|
|
wmysbbs
初级用户
积分 172
发帖 52
注册 2005-3-29
状态 离线
|
『第
10 楼』:
最后得到的“今天更新.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
|
|
2009-6-25 11:30 |
|
|
wmysbbs
初级用户
积分 172
发帖 52
注册 2005-3-29
状态 离线
|
『第
11 楼』:
Quote: | Originally posted by Hanyeguxing at 2009-6-25 11:25 AM:
给你简化一下看看。。。
最好把整个思路说清楚。。。
弄明白你的意思了
[ Last edited by Hanyeguxing on 2009-6-25 at 11:32 ] |
|
呵呵,太谢谢你了,我也去多查点资料!!
今天又是有收获
|
|
2009-6-25 11:37 |
|
|
Hanyeguxing
银牌会员
正在学习中的菜鸟...
积分 1039
发帖 897
注册 2009-3-1 来自 在地狱中仰望天堂
状态 离线
|
『第
12 楼』:
@echo off&&setlocal enabledelayedexpansion
del C:\今天更新.txt /f /q>nul 2>nul
set han=%date:~0,4%%date:~5,2%%date:~8,2%
For /f "skip=1 tokens=1,2,3,4,5* delims=," %%a in (A.txt) do (
set ye=%%a %%b
For /f "tokens=1,2,3,4,5,6* delims=- " %%i in ("%%c %%d") do (
set str1=0%%j
set str2=0%%k
set xing=%%l %%m
set gu=%%i!str1:~-2!!str2:~-2!
)
if "!gu!" == "!han!" echo !ye! !gu! !xing! >>C:\今天更新.txt
)
pause 你看一下。。。
[ Last edited by Hanyeguxing on 2009-6-25 at 12:43 ]
|
批处理之家 http://bbs.bathome.net/forum-5-1.html |
|
2009-6-25 12:19 |
|
|
wmysbbs
初级用户
积分 172
发帖 52
注册 2005-3-29
状态 离线
|
『第
13 楼』:
哈哈,感谢!!这代码简单了好多!!
|
|
2009-6-25 12:32 |
|
|
wmysbbs
初级用户
积分 172
发帖 52
注册 2005-3-29
状态 离线
|
『第
14 楼』:
set真好用!!!
我只要今天更新.txt里面的内容是第二个字段的可以吗
地下城与勇士
特种部队
......
|
|
2009-6-25 12:35 |
|
|
Hanyeguxing
银牌会员
正在学习中的菜鸟...
积分 1039
发帖 897
注册 2009-3-1 来自 在地狱中仰望天堂
状态 离线
|
|
2009-6-25 12:47 |
|
|