中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
« [1] [2] [3] »
作者:
标题: 问一个有关文本内容的难题 上一主题 | 下一主题
nbic
初级用户




积分 135
发帖 61
注册 2007-4-14
状态 离线
『楼 主』:  问一个有关文本内容的难题

下面是一个xml文档的内容的部分,难题是,如何根据其内容,然后从电脑中复制所有的Filename文件,并保存到每个文件所对应的ServerFolder路径中?
<UpdateFiles
        UpdateDate="21052007 0215">
        <FileDescription
                ComponentID="AVS"
                UpdateType="desc"
                ServerFolder="../../bases/av/avc/i386"
                Filename="av-i386-0607g.xml"
                FileDate="21052007 0057" />
        <FileDescription
                ComponentID="AS"
                UpdateType="desc"
                ServerFolder="../../bases/as/kis"
                Filename="as-0607g.xml"
                FileDate="21052007 0202" />
        <FileDescription
                ComponentID="AHI386"
                UpdateType="desc"
                ServerFolder="../../bases/ids/i386"
                Filename="ah-i386-0607g.xml"
                FileDate="18052007 1408" />
        <FileDescription
                ComponentID="AHX64"
                UpdateType="desc"
                ServerFolder="../../bases/ids/x64"
                Filename="ah-x64-0607g.xml"
                FileDate="18052007 1418" />
        <FileDescription
                ComponentID="AH"
                UpdateType="desc"
                ServerFolder="../../bases/ids/i386-x64"
                Filename="ah-i386-x64-0607g.xml"
                FileDate="18052007 1427" />

很难的一个题目。。希望高手能帮忙解决。。先谢过了!

说明一下。保存路径可以只是后面有显示的部分。如bases/av/avc/i386

[ Last edited by nbic on 2007-5-21 at 09:00 PM ]

2007-5-21 20:58
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bjsh
银牌会员





积分 2000
发帖 621
注册 2007-1-1
状态 离线
『第 2 楼』:  

Filename="av-i386-0607g.xml"
这些文件在当前文件夹吗??

2007-5-21 22:19
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
zhoushijay
高级用户

Autowalk


积分 845
发帖 375
注册 2007-3-3
状态 离线
『第 3 楼』:  

不懂XML,你能不能说的通俗一点



你好,脚本专家!
<a target=blank href=tencent://message/?uin=29654761&Site=www.111.com&Menu=yes><img border="0" SRC=http://wpa.qq.com/pa?p=1:29654761:5 alt="点击这里给我发消息"></a>
2007-5-22 10:23
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
nbic
初级用户




积分 135
发帖 61
注册 2007-4-14
状态 离线
『第 4 楼』:  



  Quote:
Originally posted by bjsh at 2007-5-21 10:19 PM:
Filename="av-i386-0607g.xml"
这些文件在当前文件夹吗??

是的。。

2007-5-22 19:31
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
nbic
初级用户




积分 135
发帖 61
注册 2007-4-14
状态 离线
『第 5 楼』:  



  Quote:
Originally posted by zhoushijay at 2007-5-22 10:23 AM:
不懂XML,你能不能说的通俗一点

它其实就是一种文档文件。可用记事本的形式打开的。。很多软件安装文件夹里面都有这类文件的啊。。

2007-5-22 19:33
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
vkill
金牌会员





积分 4103
发帖 1744
注册 2006-1-20
来自 甘肃.临泽
状态 离线
『第 6 楼』:  

sed

2007-5-22 20:56
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
nbic
初级用户




积分 135
发帖 61
注册 2007-4-14
状态 离线
『第 7 楼』:  



  Quote:
Originally posted by vkill at 2007-5-22 08:56 PM:
sed

能讲的清楚一些吗?对这个命令比较陌生。。谢了。。!

2007-5-22 21:28
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bjsh
银牌会员





积分 2000
发帖 621
注册 2007-1-1
状态 离线
『第 8 楼』:  

我写了个p的;
我把关键代码写了;
剩下的根据情况自行修改
:start处;
sed应该比这个简单吧;
@echo off
call :reset
for /f "tokens=2 delims==" %%a in ('findstr /i "serverfolder filename" a.xml') do (
        if not defined serverfolder (set "serverfolder=%%~a") else (
                       if not defined filename set "filename=%%~a" & call :start
        )
)
goto :eof
:start
set "serverfolder=%serverfolder:~6%"
echo %filename%    保存在    %serverfolder%
:reset
set "serverfolder="
set "filename="
[ Last edited by bjsh on 2007-5-23 at 08:11 PM ]

2007-5-22 23:31
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
nbic
初级用户




积分 135
发帖 61
注册 2007-4-14
状态 离线
『第 9 楼』:  



  Quote:
Originally posted by bjsh at 2007-5-22 11:31 PM:
我写了个p的;
我把关键代码写了;
剩下的根据情况自行修改
:start处;
sed应该比这个简单吧;
[code]
@echo off
call :reset
for /f "tokens=2 delims==" %%a i ...

刚才试了试。界面一闪就没了。。什么文件也没复制到。。

再问一下,有些文件开头的行数UpdateFiles
与FileDescription之间的数有不同。set的参数该如何改呢?

2007-5-23 07:34
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bjsh
银牌会员





积分 2000
发帖 621
注册 2007-1-1
状态 离线
『第 10 楼』:  

to :nbic

上面的代码我只写了关键部分;
复制部分我没写;
在命令行下运行;你会看到结果;不要直接双击;或者加pause;


其中的复制部分我没写我写的是
echo %filename%    保存在    %serverfolder%

这里是留给你自己修改的;

比如如果已经存在bases/av/avc/i386
直接copy %filename% c:\(其他盘自行修改)%serverfolder%
如果目录不存在;无非是多个md %serverfolder%

2007-5-23 09:30
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
nbic
初级用户




积分 135
发帖 61
注册 2007-4-14
状态 离线
『第 11 楼』:  

好的。。试试看。。

2007-5-23 10:12
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
nbic
初级用户




积分 135
发帖 61
注册 2007-4-14
状态 离线
『第 12 楼』:  

一下是我稍微修改后的程序。用bat还是cmd运行。都没达到效果。双击后出现一界面。提示按任意键,按任意键后,自动退出了。。
@echo off
call :reset
for /f "tokens=2 delims==" %%a in ('findstr /i "serverfolder filename" a.xml') do (
        if not defined serverfolder (set "serverfolder=%%~a") else (
                       if not defined filename set "filename=%%~a" & call :start
        )
)
goto :eof
md D:\AVP\%serverfolder%
:start
set "serverfolder=%serverfolder:~6%
copy %filename% D:\AVP\%serverfolder%
:reset
set "serverfolder="
set "filename="

pause
exit

2007-5-23 10:28
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
zhoushijay
高级用户

Autowalk


积分 845
发帖 375
注册 2007-3-3
状态 离线
『第 13 楼』:  

有几点注明一下:
1。因为COPYFILE不能在HTTP上使用,所以我把路径改成了bases\ids\i386\
2。此程序必须在bases的上一及目录中运行
3。所有文件必须同时存在,缺一不可,并且在同一目录中
4。11.xml为上面的文件
set fso=createobject("scripting.filesystemobject")
set opxml=fso.opentextfile("11.xml",1)

do while opxml.atendofline<>true
        rdxml=opxml.readline

        if instr(17,rdxml,"Filename")<>0 then
                unt=mid(rdxml,27)
                filenm=mid(unt,1,len(unt)-1)
        end if

        if instr(17,rdxml,"ServerFolder")<>0 then
                path=mid(rdxml,37)
                pathnm=mid(path,1,len(path)-1)
                pathnm=pathnm&"\"
                copath=replace(pathnm,"/","\")
        end if

        if filenm<>"" and copath<>"" then
                fso.copyfile filenm,copath
                comp="已复制文件 "&filenm&" 到 "&copath
                com=com&chr(10)&comp
                filenm=""
                copath=""
        end if

loop
msgbox(com)
[ Last edited by zhoushijay on 2007-5-23 at 11:05 AM ]



你好,脚本专家!
<a target=blank href=tencent://message/?uin=29654761&Site=www.111.com&Menu=yes><img border="0" SRC=http://wpa.qq.com/pa?p=1:29654761:5 alt="点击这里给我发消息"></a>
2007-5-23 10:52
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
nbic
初级用户




积分 135
发帖 61
注册 2007-4-14
状态 离线
『第 14 楼』:  

楼上朋友的第二条比较苛刻。。我要编辑的xml 文件有26个那么多,而且所存放的文件夹又大都不同。。所以,为难哦。。

2007-5-23 11:10
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
zhoushijay
高级用户

Autowalk


积分 845
发帖 375
注册 2007-3-3
状态 离线
『第 15 楼』:  

Filename="av-i386-0607g.xml"
如果不在同一目录中,那么filename是不是因该写上路径,否则XML里也会无效的吧



你好,脚本专家!
<a target=blank href=tencent://message/?uin=29654761&Site=www.111.com&Menu=yes><img border="0" SRC=http://wpa.qq.com/pa?p=1:29654761:5 alt="点击这里给我发消息"></a>
2007-5-23 11:31
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] [3] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: