中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-04 16:24
48,038 主题排行 / 350,123 发帖 / 今日 0 篇 / 48,251 会员排行
DOS批处理 & 脚本技术(批处理室) » 问一个有关文本内容的难题
可打印版本  2,210 / 34
第1楼 nbic 发表于 2007-05-21 20:58
初级用户 发帖 61 积分 135
问一个有关文本内容的难题
下面是一个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 ]
第2楼 bjsh 发表于 2007-05-21 22:19
银牌会员 发帖 621 积分 2,000
Filename="av-i386-0607g.xml"
这些文件在当前文件夹吗??
第3楼 zhoushijay 发表于 2007-05-22 10:23
高级用户 发帖 375 积分 845
不懂XML,你能不能说的通俗一点
第4楼 nbic 发表于 2007-05-22 19:31
初级用户 发帖 61 积分 135
Originally posted by bjsh at 2007-5-21 10:19 PM:
Filename="av-i386-0607g.xml"
这些文件在当前文件夹吗??

是的。。
第5楼 nbic 发表于 2007-05-22 19:33
初级用户 发帖 61 积分 135
Originally posted by zhoushijay at 2007-5-22 10:23 AM:
不懂XML,你能不能说的通俗一点


它其实就是一种文档文件。可用记事本的形式打开的。。很多软件安装文件夹里面都有这类文件的啊。。
第6楼 vkill 发表于 2007-05-22 20:56
金牌会员 发帖 1,744 积分 4,103 来自 甘肃.临泽
sed
第7楼 nbic 发表于 2007-05-22 21:28
初级用户 发帖 61 积分 135
Originally posted by vkill at 2007-5-22 08:56 PM:
sed

能讲的清楚一些吗?对这个命令比较陌生。。谢了。。!
第8楼 bjsh 发表于 2007-05-22 23:31
银牌会员 发帖 621 积分 2,000
我写了个p的;
我把关键代码写了;
剩下的根据情况自行修改
:start处;
sed应该比这个简单吧;


[ Last edited by bjsh on 2007-5-23 at 08:11 PM ]
第9楼 nbic 发表于 2007-05-23 07:34
初级用户 发帖 61 积分 135
Originally posted by bjsh at 2007-5-22 11:31 PM:
我写了个p的;
我把关键代码写了;
剩下的根据情况自行修改
:start处;
sed应该比这个简单吧;
第10楼 bjsh 发表于 2007-05-23 09:30
银牌会员 发帖 621 积分 2,000
to :nbic

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


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

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

比如如果已经存在bases/av/avc/i386
直接copy %filename% c:\(其他盘自行修改)%serverfolder%
如果目录不存在;无非是多个md %serverfolder%
第11楼 nbic 发表于 2007-05-23 10:12
初级用户 发帖 61 积分 135
好的。。试试看。。
第12楼 nbic 发表于 2007-05-23 10:28
初级用户 发帖 61 积分 135
一下是我稍微修改后的程序。用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
第13楼 zhoushijay 发表于 2007-05-23 10:52
高级用户 发帖 375 积分 845
有几点注明一下:
1。因为COPYFILE不能在HTTP上使用,所以我把路径改成了bases\ids\i386\
2。此程序必须在bases的上一及目录中运行
3。所有文件必须同时存在,缺一不可,并且在同一目录中
4。11.xml为上面的文件


[ Last edited by zhoushijay on 2007-5-23 at 11:05 AM ]
第14楼 nbic 发表于 2007-05-23 11:10
初级用户 发帖 61 积分 135
楼上朋友的第二条比较苛刻。。我要编辑的xml 文件有26个那么多,而且所存放的文件夹又大都不同。。所以,为难哦。。
第15楼 zhoushijay 发表于 2007-05-23 11:31
高级用户 发帖 375 积分 845
Filename="av-i386-0607g.xml"
如果不在同一目录中,那么filename是不是因该写上路径,否则XML里也会无效的吧
1 2 3  下一页
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023