中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]笨丫头想不出问题,批处理xml文件
作者:
标题: [求助]笨丫头想不出问题,批处理xml文件 上一主题 | 下一主题
米娜
初级用户





积分 147
发帖 20
注册 2003-1-11
状态 离线
『楼 主』:  [求助]笨丫头想不出问题,批处理xml文件

欲做一批处理,将xml文件中的某一字符替换,

xml文件中的代码:


……

……

……

grid_menu_bg="xin003.jpg"/>

……

……

……

欲在grid_menu_bg="xin003.jpg" 后边添加代码idle_status_area_bg="spacer.png" idle_softkey_area_bg="spacer.png"/>


既,批处理后的代码是 :



grid_menu_bg="xin003.jpg" idle_status_area_bg="spacer.png" idle_softkey_area_bg="spacer.png"/>


啊:把:
grid_menu_bg="xin003.jpg"/>            改成        grid_menu_bg="xin003.jpg" idle_status_area_bg="spacer.png" idle_softkey_area_bg="spacer.png"/>


可代码中的 xin003.jpg  的 xin003 是随机的,


呵呵,我知道很高难度~~~~~

2007-2-16 11:17
查看资料  发短消息 网志   编辑帖子  回复  引用回复
gne3
高级用户

DOS学徒


积分 526
发帖 252
注册 2007-2-12
状态 离线
『第 2 楼』:  

不会但还是顶了

2007-2-16 22:29
查看资料  发短消息 网志   编辑帖子  回复  引用回复
amao
中级用户





积分 316
发帖 152
注册 2006-6-18
状态 离线
『第 3 楼』:  

发一段你的xml代码上来,这样看不出规律,没法帮你

2007-2-16 22:48
查看资料  发短消息 网志   编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 4 楼』:  

有这个grid_menu_bg的行?

2007-2-17 00:47
查看资料  发短消息 网志   编辑帖子  回复  引用回复
0451lym
高级用户





积分 760
发帖 357
注册 2005-10-10
状态 离线
『第 5 楼』:  

@echo off
:00
SET 字符串=grid_menu_bg
strings 新字符串=READ 新字符串.TXT,1
SET 文件名=xml
SET 新文件=新文件.TXT
SET 取字符串数=1,25
SET 行数=1
:11
SET X=>NUL
strings x=read %文件名%,行数
if "x"=="" goto 退出
strings 行数=add %行数%,1
ECHO %X%|FIND /I "%字符串%">NUL
if ERRORLEVEL 1 goto 写旧文件
:写新文件
STRINGS X=MID %X%,%取字符串数%
ECHO %X%%新字符串%>>%新文件%
GOTO 11
:写旧文件
ECHO %X%>>%新文件%
GOTO 11
:退出
for %%x in (X 字符串 新字符串 文件名 新文件 取字符串数 行数) do SET %%x=>NUL
CLS
ECHO 工作已经完成,请验收!

[ Last edited by 0451lym on 2007-2-17 at 08:06 AM ]

2007-2-17 02:53
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
米娜
初级用户





积分 147
发帖 20
注册 2003-1-11
状态 离线
『第 6 楼』:  

文件里的代码是没有规律的,所出现的常量一样,但数值不一样的。

abc..xml文件的代码如下(一个给手机做主题的代码,其中的图片文件名是随机的,不用修改,只是改一部分,添加一些代码,就是在红色部分的代码中添加,):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE theme PUBLIC "-//NOKIA//DTD THEME 2.0//EN" "theme.dtd">
<theme name="chun1" version="2.0">
        <colors
                display="main"
                status_area_font_color="0x0"
                calendar_highlight_color="0xccffcc" />
        <wallpaper
                main_display_graphics="026.jpg" />
        <screensaver
                main_display_graphics="025.jpg" />
        <background
                main_default_bg="xin003.jpg"
                grid_menu_bg="xin003.jpg" />
        <calendar_bg
                january="xin003.jpg"
                february="xin003.jpg"
                march="xin003.jpg"
                april="xin003.jpg"
                may="xin003.jpg"
                june="xin003.jpg"
                july="xin003.jpg"
                august="xin003.jpg"
                september="xin003.jpg"
                october="xin003.jpg"
                november="xin003.jpg"
                december="xin003.jpg" />
        <highlight
                list="32.png" />
        <startup
                main_display_graphics="026.jpg" />
        <shutdown
                main_display_graphics="026.jpg" />
        <transformation_open
                main_display_graphics="026.jpg" />
        <transformation_close
                main_display_graphics="026.jpg" />
</theme>



使 grid_menu_bg="xin003.jpg" />  变为 grid_menu_bg="xin003.jpg" idle_status_area_bg="spacer.png" idle_softkey_area_bg="spacer.png" />

注:黑色部分是要添加的代码,

其中 grid_menu_bg= 后的 "xin003.jpg" 可能是 "xin066.jpg"  或是 "xin055.jpg"  或是别的什么图片格式的文件,不用改~~~

2007-2-17 07:04
查看资料  发短消息 网志   编辑帖子  回复  引用回复
0451lym
高级用户





积分 760
发帖 357
注册 2005-10-10
状态 离线
『第 7 楼』:  

晕,这么简单的东西还没弄明白?
都已经给你写的很完美了.开头的改一下就可以了.
SET 字符串=grid_menu_bg
strings 新字符串=READ 新字符串.TXT,1
SET 文件名=xml
SET 新文件=新文件.TXT
SET 取字符串数=1,25
SET 行数=1

-----------------------------------------------------------
在创建一个新的文件取名叫"新字符串.TXT",在里面把
idle_status_area_bg="spacer.png" idle_softkey_area_bg="spacer.png" />
写进去就可以了

[ Last edited by 0451lym on 2007-2-17 at 08:07 AM ]

2007-2-17 07:37
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
0451lym
高级用户





积分 760
发帖 357
注册 2005-10-10
状态 离线
『第 8 楼』:  

给你解释解释批处理的意思!
蓝色的部分为著译.


@echo off
:00
REM 把要找的内容设置变量,取其最为独特的字符串,不一定是全部
SET 字符串=grid_menu_bg
REM 把要加入的字符串设置为变量,需要先在新字符串.TXT中写入完整字符串
strings 新字符串=READ  新字符串.TXT,1
REM 把要修改的文件设置为变量
SET 文件名=xml
REM 把修改后的文件设置为变量
SET 新文件=新文件.TXT
REM 原文件中要截取保留的字符串内容
SET 取字符串数=1,25
REM 设置原始文件开始行数为1
SET 行数=1
:11
REM 清空变量X
SET X=>NUL
REM 读取原文件的某行,设置为变量X
strings x=read %文件名%,行数
REM 如果读取为最后一行,那么退出
if "x"=="" goto 退出
REM 设置行数加1,即确定下一次读取的下一行
strings 行数=add %行数%,1
REM 检查变量X中有没有需要修改的字符串行
ECHO %X%|FIND /I "%字符串%">NUL
REM 如果没有,那么跳转到写旧文件标记
if ERRORLEVEL 1 goto 写旧文件
:写新文件
REM X中有所需要修改的字符串行,取得所要保留的字符串部分
STRINGS X=MID %X%,%取字符串数%
REM 把保留的字符串部分和需要加入的字符串部分写入到新文件
ECHO %X%%新字符串%>>%新文件%
GOTO 11
:写旧文件
REM 把不需要修改的旧文件行写入到新文件
ECHO %X%>>%新文件%
GOTO 11
:退出
REM 清除所有变量
for %%x in (X 字符串 新字符串 文件名 新文件 取字符串数 行数) do SET %%x=>NUL
CLS
ECHO 工作已经完成,请验收!

[ Last edited by 0451lym on 2007-2-17 at 08:05 AM ]

   此帖被 +3 点积分     点击查看详情   
评分人:【 fastslz 分数: +3  时间:2007-2-20 09:28


2007-2-17 08:02
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
grizzlyjian
新手上路





积分 12
发帖 6
注册 2007-2-17
状态 离线
『第 9 楼』:  

对啊?我一点都不会,第一次发帖,开始学习了

2007-2-17 08:49
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
米娜
初级用户





积分 147
发帖 20
注册 2003-1-11
状态 离线
『第 10 楼』:  

5555 5555  5555 :(:( 0451lym 大叔  不对呀~~~


进入了一个死循环,且出现的 新文件.TXT 的内容是:
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
ECHO 处于关闭状态。
……

下边的附件就是那文件,麻烦大师测试一下~~~~  俺笨~~~~ 有劳您了~~~~~ :( :(

[ Last edited by 米娜 on 2007-2-17 at 04:23 PM ]

附件 1: theme_descriptor.rar (2007-2-17 14:18, 528 bytes, 下载附件所需积分 1 点 ,下载次数: 5)
2007-2-17 14:00
查看资料  发短消息 网志   编辑帖子  回复  引用回复
electronixtar
铂金会员





积分 7493
发帖 2672
注册 2005-9-2
状态 离线
『第 11 楼』:  

笨丫头想不出问题 系列主题~~~




C:\>BLOG http://initiative.yo2.cn/
C:\>hh.exe ntcmds.chm::/ntcmds.htm
C:\>cmd /cstart /MIN "" iexplore "about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'>"
2007-2-18 07:13
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
米娜
初级用户





积分 147
发帖 20
注册 2003-1-11
状态 离线
『第 12 楼』:  

是 主题系列

2007-2-19 15:45
查看资料  发短消息 网志   编辑帖子  回复  引用回复
vkill
金牌会员





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

sed -r "/^[ ]*grid_menu_bg=\x22xin([0-9]{3})\.jpg\x22[ ]*\/>[ ]*$/!d;s/\/>/idle_status_area_bg=\x22spacer.png\x22 idle_softkey_area_bg=\x22spacer.png\x22 &/" life

只适合这个

2007-2-23 01:40
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 14 楼』:  

如果用3方建议用UE~去编辑下~用正则表达式很快的。。。

2007-2-23 08:28
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: