|
wmysbbs
初级用户
积分 172
发帖 52
注册 2005-3-29
状态 离线
|
『楼 主』:
从一文本文件中提取多个字段!!
A.txt文件内容如下
[5791]
F_Id=5791
F_GameName=诸侯Online
F_FromPath=F:\网络游戏\诸侯Online\
[5792]
F_Id=5792
F_GameName=QQ游戏
F_FromPath=F:\棋牌对战\QQGame\
F_FromPath字段的内容是已有固定的
F_FromPath=F:\网络游戏\诸侯Online\
F_FromPath=F:\棋牌对战\QQGame\
根据上次tireless和Hanyeguxing两位高手写的代码:
For /f "usebackq eol= delims=" %%a in (!TBLog!!ha!需要更新.txt) do (
if not defined %%a (
for %%? in (H K N Q) do (
echo [更新]
echo 远程目录=D:\网络游戏\%%a
echo 本地目录=%%?:\网络游戏\%%a
原调用.exe
) > cfg.ini
echo;%%a>>!TBLog!!ha!已更新.txt
)
)
想将F_FromPath字段的内容作为变量添加到下面这一句!
echo 远程目录=D:\!F_FromPath!\%%a
同样,已经有 需要更新.txt 此文本,里面的内容等于F_GameName里面的内容
再次请教!!
[ Last edited by wmysbbs on 2009-7-5 at 09:22 ]
|
|
2009-7-5 03:26 |
|
|
tireless
银牌会员
积分 2025
发帖 1122
注册 2007-9-5
状态 离线
|
『第
2 楼』:
是这样吗:
提取 a.txt 中 F_FromPath 等号右边的路径作为已更新的,然后...
[ Last edited by tireless on 2009-7-5 at 11:48 ]
|
|
2009-7-5 05:52 |
|
|
wmysbbs
初级用户
积分 172
发帖 52
注册 2005-3-29
状态 离线
|
『第
3 楼』:
Quote: | Originally posted by tireless at 2009-7-5 05:52 AM:
是这样吗:
提取 a.txt 中 F_FromPath 等号右边的路径作为已更新的,然后...:
[ Last edited by tireless on 2009-7-5 at 05:54 ] |
|
不是的,应该是这样,把
改成echo 远程目录=D:\网络游戏\%%a
echo 远程目录=F:\!F_FromPath!%%a
echo 本地目录==%%?:\!F_FromPath!%%a 本来,echo 远程目录=D:\网络游戏\%%a 像这样固定的没问题,可是遇到源目录不一样的,就不能实现更新了
F_GameName=诸侯Online
F_FromPath=F:\网络游戏\诸侯Online\
F_GameName=QQ游戏
F_FromPath=F:\棋牌对战\QQGame\
这两个的源目录都不一样的
我是想,读取需要更新.txt之后,对比已更新.txt,然后再获取A.txt里面对应的F_FromPath盘符后的值(F:\网络游戏\诸侯Online\)(蓝色部分)
比如:
需要更新.txt
英雄II
地下城与勇士
劲舞团
功夫小子
诸侯Online
已更新.txt
英雄II
地下城与勇士
A.txt
F_GameName=诸侯Online
F_FromPath=F:\游戏\诸侯Online\
F_GameName=劲舞团
F_FromPath=F:\网络游戏\劲舞团\
当读取到未更新的游戏 诸侯Online 时,远程目录的变量等于A.txt里面的F_FromPath盘符后的值,如此循环
cfg.ini输出的内容应该为:
[更新]
远程目录=F:\游戏\诸侯Online\
本地目录=E:\游戏\诸侯Online\
[ Last edited by wmysbbs on 2009-7-5 at 07:59 ]
|
|
2009-7-5 07:23 |
|
|
tireless
银牌会员
积分 2025
发帖 1122
注册 2007-9-5
状态 离线
|
『第
4 楼』:
@echo off
for /f "delims== tokens=1,* eol=[" %%a in (a.txt) do (
if /i "%%a"=="F_FromPath" (set #!var!=%%~pb) else set var=%%b
)
For /f "usebackq eol= delims=" %%a in (!TBLog!!ha!已更新.txt) do set %%a=.
For /f "usebackq eol= delims=" %%a in (!TBLog!!ha!需要更新.txt) do (
if not defined %%a (
for %%? in (H K N Q) do (
echo [更新]
echo 远程目录=!#%%a!
set var=!#%%a!
echo 本地目录=%%?:!var:*:=!
原调用.exe
) > cfg.ini
echo;%%a>>!TBLog!!ha!已更新.txt
)
) [ Last edited by tireless on 2009-7-5 at 11:38 ]
|
|
2009-7-5 11:36 |
|
|
wmysbbs
初级用户
积分 172
发帖 52
注册 2005-3-29
状态 离线
|
『第
5 楼』:
不行,没成功,最后得出的cfg.ini文件是这样
[更新]
远程目录=
本地目录=Q:*:=
|
|
2009-7-5 20:23 |
|
|
tireless
银牌会员
积分 2025
发帖 1122
注册 2007-9-5
状态 离线
|
『第
6 楼』:
错了两个地方:
少了 setlocal enabledelayedexpansion;
set #!var!=%%~pb 应该是 set #!var!=%%b;
再试试:
@echo off & setlocal enabledelayedexpansion
for /f "delims== tokens=1,* eol=[" %%a in (a.txt) do (
if /i "%%a"=="F_FromPath" (set #!var!=%%b) else set var=%%b
)
For /f "usebackq eol= delims=" %%a in (!TBLog!!ha!已更新.txt) do set %%a=.
For /f "usebackq eol= delims=" %%a in (!TBLog!!ha!需要更新.txt) do (
if not defined %%a (
for %%? in (H K N Q) do (
echo [更新]
echo 远程目录=!#%%a!
set var=!#%%a!
echo 本地目录=%%?:!var:*:=!
原调用.exe
) > cfg.ini
echo;%%a>>!TBLog!!ha!已更新.txt
)
)
|
|
2009-7-6 02:28 |
|
|
wmysbbs
初级用户
积分 172
发帖 52
注册 2005-3-29
状态 离线
|
『第
7 楼』:
怪不得,今天我自己加了setlocal enabledelayedexpansion
可是还有点问题,按照
A.txt
F_GameName=诸侯Online
F_FromPath=F:\游戏\诸侯Online\
F_GameName=劲舞团
F_FromPath=F:\网络游戏\劲舞团\
的内容是可以了,但:
[5791]
F_Id=5791
F_GameName=诸侯Online
F_GameType=,-1,
F_PcGroupId=,15,16,18,
F_IconIndex=648
F_FromPath=F:\网络游戏\诸侯Online\
F_LocalPath=
F_Reg=
F_RunFile=play.exe
F_RunCmd=
F_Index=
F_UseCount=0
F_LastUseTime=2009-7-4 7:11:03
F_GameInfo=
F_IsUpdateForce=0
F_IsUpdateVer=0
F_IsUpdateDate=0
F_Ver=
F_Date=0
F_DontDeleteFile=False
F_IsUseSize=False
F_IsUseDate=False
F_ErrorDate=False
F_UpdateModel=0
F_FirstWaitRun=False
F_FirstWaitTime=
F_FirstRunFile=
F_FirstRunCmd=
F_ExcludeFile=
F_ExcludePath=
F_ForceUpdateFile=
F_SaveFile=
F_SaveRecover=
F_BackUpdate=
F_ServerVer=
F_ServerList=
F_ServerListStr=
F_AutoUpdate=
F_Usecount2=0
F_Grade=3
F_Vouch=
F_VouchIndex=
F_GameId=102253
F_UpdateTime=20090704071103
F_IsSetting=True
F_DiskType=,115,116,118,
F_AutoDown=True
F_IsFirst=False
F_DownDontDeleteFile=False
F_P2PDown=False
F_P2PDateTime=
F_DisableNoUpdate=False
F_DisableUpdateServer=False
F_AlwaysUpdate=False
F_CD=
F_AddDateTime=2009-7-4 7:11:03
F_ServerGroupId=
F_HotValue=0.75
F_CreateShortCut=False
F_DisableRecover=False
F_IsCooperation=False
F_StartParameter=
LocalPath=F:\网络游戏\诸侯Online\
LocalPath2=8iwKESyAsm2xjzbQvPFVotYyitDiKQs=
[5792]
F_Id=5792
F_GameName=QQ游戏
F_GameType=,-5,
F_PcGroupId=,15,16,18,
F_IconIndex=649
F_FromPath=F:\棋牌对战\QQGame\
F_LocalPath=
F_Reg=
F_RunFile=QQGame.exe
F_RunCmd=
F_Index=
F_UseCount=0
F_LastUseTime=2009-7-4 21:49:57
F_GameInfo=
F_IsUpdateForce=0
F_IsUpdateVer=0
F_IsUpdateDate=0
F_Ver=
F_Date=0
F_DontDeleteFile=False
F_IsUseSize=False
F_IsUseDate=False
F_ErrorDate=False
F_UpdateModel=0
F_FirstWaitRun=False
F_FirstWaitTime=0
F_FirstRunFile=
F_FirstRunCmd=
F_ExcludeFile=
F_ExcludePath=
F_ForceUpdateFile=
F_SaveFile=
F_SaveRecover=
F_BackUpdate=
F_ServerVer=
F_ServerList=
F_ServerListStr=
F_AutoUpdate=
F_Usecount2=0
F_Grade=3
F_Vouch=
F_VouchIndex=
F_GameId=500620
F_UpdateTime=20090704222542
F_IsSetting=True
F_DiskType=,115,116,118,
F_AutoDown=True
F_IsFirst=False
F_DownDontDeleteFile=False
F_P2PDown=False
F_P2PDateTime=
F_DisableNoUpdate=False
F_DisableUpdateServer=False
F_AlwaysUpdate=False
F_CD=
F_AddDateTime=2009-7-4 21:49:57
F_ServerGroupId=
F_HotValue=3.00
F_CreateShortCut=False
F_DisableRecover=False
F_IsCooperation=False
F_StartParameter=
LocalPath=F:\棋牌对战\QQ游戏\
LocalPath2=8iwKGjGHkwirlTzQO048glbrug==
这样的话是出错的
|
|
2009-7-6 10:46 |
|
|
tireless
银牌会员
积分 2025
发帖 1122
注册 2007-9-5
状态 离线
|
『第
8 楼』:
@echo off & setlocal enabledelayedexpansion
for /f "eol=[ delims== tokens=1,*" %%a in (a.txt) do (
if "%%a"=="F_GameName" (set var=%%b) else (
if "%%a"=="F_FromPath" set #!var!=%%b
)
)
For /f "usebackq eol= delims=" %%a in (!TBLog!!ha!已更新.txt) do set %%a=.
For /f "usebackq eol= delims=" %%a in (!TBLog!!ha!需要更新.txt) do (
if not defined %%a (
for %%? in (H K N Q) do (
echo [更新]
echo 远程目录=!#%%a!
set var=!#%%a!
echo 本地目录=%%?:!var:*:=!
原调用.exe
) > cfg.ini
echo;%%a>>!TBLog!!ha!已更新.txt
)
)
|
|
2009-7-6 11:25 |
|
|
wmysbbs
初级用户
积分 172
发帖 52
注册 2005-3-29
状态 离线
|
|
2009-7-6 11:52 |
|