Board logo

标题: [求助]笨丫头想不出问题,批处理xml文件 [打印本页]

作者: 米娜     时间: 2007-2-16 11:17    标题: [求助]笨丫头想不出问题,批处理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 是随机的,


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

作者: gne3     时间: 2007-2-16 22:29
不会但还是顶了

作者: amao     时间: 2007-2-16 22:48
发一段你的xml代码上来,这样看不出规律,没法帮你

作者: slore     时间: 2007-2-17 00:47
有这个grid_menu_bg的行?

作者: 0451lym     时间: 2007-2-17 02:53
@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 07:04
文件里的代码是没有规律的,所出现的常量一样,但数值不一样的。

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" 或是别的什么图片格式的文件,不用改~~~

作者: 0451lym     时间: 2007-2-17 07:37
晕,这么简单的东西还没弄明白?
都已经给你写的很完美了.开头的改一下就可以了.
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 ]

作者: 0451lym     时间: 2007-2-17 08:02
给你解释解释批处理的意思!
蓝色的部分为著译.


@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 ]

作者: grizzlyjian     时间: 2007-2-17 08:49
对啊?我一点都不会,第一次发帖,开始学习了

作者: 米娜     时间: 2007-2-17 14:00
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)

作者: electronixtar     时间: 2007-2-18 07:13
笨丫头想不出问题 系列主题~~~

作者: 米娜     时间: 2007-2-19 15:45
是 主题系列

作者: vkill     时间: 2007-2-23 01:40
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

只适合这个

作者: slore     时间: 2007-2-23 08:28
如果用3方建议用UE~去编辑下~用正则表达式很快的。。。