![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-03 11:53 |
共 48,038 主题排行 / 350,123 发帖 / 今日 0 篇 / 48,251 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » [求助]笨丫头想不出问题,批处理xml文件 |
| 可打印版本 1,399 / 13 |
| 第1楼 米娜 | 发表于 2007-02-16 11:17 |
| 初级用户 发帖 20 积分 147 | |
|
[求助]笨丫头想不出问题,批处理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 是随机的, 呵呵,我知道很高难度~~~~~ |
|
| 第2楼 gne3 | 发表于 2007-02-16 22:29 |
| 高级用户 发帖 252 积分 526 | |
|
不会但还是顶了
|
|
| 第3楼 amao | 发表于 2007-02-16 22:48 |
| 中级用户 发帖 152 积分 316 | |
|
发一段你的xml代码上来,这样看不出规律,没法帮你
|
|
| 第4楼 slore | 发表于 2007-02-17 00:47 |
| 铂金会员 发帖 2,478 积分 5,212 | |
|
有这个grid_menu_bg的行?
|
|
| 第5楼 0451lym | 发表于 2007-02-17 02:53 |
| 高级用户 发帖 357 积分 760 | |
|
@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 ] |
|
| 第6楼 米娜 | 发表于 2007-02-17 07:04 |
| 初级用户 发帖 20 积分 147 | |
|
文件里的代码是没有规律的,所出现的常量一样,但数值不一样的。
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" 或是别的什么图片格式的文件,不用改~~~ |
|
| 第7楼 0451lym | 发表于 2007-02-17 07:37 |
| 高级用户 发帖 357 积分 760 | |
|
晕,这么简单的东西还没弄明白?
都已经给你写的很完美了.开头的改一下就可以了. 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 ] |
|
| 第8楼 0451lym | 发表于 2007-02-17 08:02 |
| 高级用户 发帖 357 积分 760 | |
|
给你解释解释批处理的意思!
蓝色的部分为著译. @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 ] |
|
| 第9楼 grizzlyjian | 发表于 2007-02-17 08:49 |
| 新手上路 发帖 6 积分 12 | |
|
对啊?我一点都不会,第一次发帖,开始学习了
|
|
| 第10楼 米娜 | 发表于 2007-02-17 14:00 |
| 初级用户 发帖 20 积分 147 | |
|
5555 5555 5555 :(:( 0451lym 大叔 不对呀~~~
进入了一个死循环,且出现的 新文件.TXT 的内容是: ECHO 处于关闭状态。 ECHO 处于关闭状态。 ECHO 处于关闭状态。 ECHO 处于关闭状态。 …… 下边的附件就是那文件,麻烦大师测试一下~~~~ 俺笨~~~~ 有劳您了~~~~~ :( :( [ Last edited by 米娜 on 2007-2-17 at 04:23 PM ] 附件 theme_descriptor.rar (528 bytes) |
|
| 第11楼 electronixtar | 发表于 2007-02-18 07:13 |
| 铂金会员 发帖 2,672 积分 7,493 | |
|
笨丫头想不出问题 系列主题~~~
|
|
| 第12楼 米娜 | 发表于 2007-02-19 15:45 |
| 初级用户 发帖 20 积分 147 | |
|
是 主题系列
|
|
| 第13楼 vkill | 发表于 2007-02-23 01:40 |
| 金牌会员 发帖 1,744 积分 4,103 来自 甘肃.临泽 | |
|
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
只适合这个 |
|
| 第14楼 slore | 发表于 2007-02-23 08:28 |
| 铂金会员 发帖 2,478 积分 5,212 | |
|
如果用3方建议用UE~去编辑下~用正则表达式很快的。。。
|
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |