中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-11 21:56
47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行
DOS批处理 & 脚本技术(批处理室) » [已结]把某行固定字符串后面的字符串改成指定的字符串
可打印版本  3,154 / 25
第16楼 ktv98 发表于 2008-12-03 20:43
初级用户 发帖 81 积分 112
Originally posted by lxmxn at 2008-12-2 03:27 AM:
@echo off
xml ed -u "/KuGoo/Plugin/@ModulesCount" -v "1" -i "/KuGoo/Plugin" -t "attr" -n "PluginPath" -v "C:\Program Files\KuGou\KuGou2008\ktv98\Plugins\\" -i "/KuGoo/Plugin" -t "attr" -n "Module0" -v "dsp_ktv1.dll|0" KuGoo.xml | xml fo > #.xml
move /y #.xml KuGoo.xml


我试了不行.一点反应都没有.
第17楼 lxmxn 发表于 2008-12-05 04:15
版主 发帖 4,938 积分 11,386
Originally posted by ktv98 at 2008-12-3 20:43:


我试了不行.一点反应都没有.

天啊,快被你们这些人给气疯了!!!!
难道你一点脑筋都不肯动么????
思考一下会瘦你几斤肉是吧?
我已经回答的这么详细了,还“一点反应都没有”!!!!
你看看我的这里,怎么就有反应呢?
我现在彻底的明白了为什么willsort,无奈何,3742668,est,9527,vkill,bjsh他们为什么要离开这里了!
唉。。。。。。。。。
D:\lxmxn\work\perl\test\new>type KuGoo.xml
锘??xml version="1.0" encoding="UTF-8"?>
<KuGoo version="5.0">
<Misc DefaultDownPath="F:\KuGou\"/>
<Player Mute="0" Volume="100" PlayListFormVisible="1" EQFormVisible="0" LRCFormVisible="1" WebFormVisible="1" MiniMo
<Equalizer Enable="0" PreampValue="0" BalanceValue="50" EQSound3DValue="0" PresetIndex="0" BandsGain="0,0,0,0,0,0,0,
<Lyric LRCSavePath="C:\Program Files\KuGou\KuGou2008\Lyric\" LRCStayOnTop="1" AutoShowLRC="1" AutoSaveLRCModify="1"
<Plugin ModulesCount="0"/>
<Associates Enabled="1">
<FileExt>KGM</FileExt>
<FileExt>MP1</FileExt>
<FileExt>MP2</FileExt>
<FileExt>MP3</FileExt>
<FileExt>WMA</FileExt>
<FileExt>WAV</FileExt>
<FileExt>OGG</FileExt>
<FileExt>APE</FileExt>
<FileExt>M3U</FileExt>
<FileExt>FLAC</FileExt>
<FileExt>CDA</FileExt>
<FileExt>KRC</FileExt>
</Associates>
<AudioDevice DeviceType="0" DeviceIndex="0"/>
<General TaskBarScrollText="1" MagneticSize="10" GlobalHotKeyActionMsg="1" WebBillClickMsg="1" FadeInShowForms="1" M
<PlayBack AutoPlay="0" AutoStopWhenError="1" PlayPriority="0" ContinueLastPlayProgress="0" LastPlayListID="-1" LastP
<PlayList DisableDelFile="0" ItemInfoHint="1" EnablePlaylistDrag="1"/>
<Network StopP2P="0" NetType="0" ProxyType="0" ProxyPort="0" DownPort="26401" DownSpeed="230" UpSpeed="-1" MinBand="
<HotKey GlobalHotKey="1" KeyMap0="閫夐」|112|0" KeyMap1="鎾斁/鏆傚仠|116|49268" KeyMap2="涓婁竴鏇瞸16421|49189" Ke
<Skin AdjustColor="#000000"/>
<Info data1="000000000000"/>
<PersonalInfo OwnUserID="0" InfoVersion="0" Sex="0" Age="0"/>
</KuGoo>

D:\lxmxn\work\perl\test\new>type doit.bat
@echo off
xml ed -u "/KuGoo/Plugin/@ModulesCount" -v "1" -i "/KuGoo/Plugin" -t "attr" -n "PluginPath" -v "C:\Program Files\KuGou
move /y #.xml KuGoo.xml

D:\lxmxn\work\perl\test\new>doit.bat
移动了 1 个文件。

D:\lxmxn\work\perl\test\new>type KuGoo.xml
<?xml version="1.0" encoding="UTF-8"?>
<KuGoo version="5.0">
<Misc DefaultDownPath="F:\KuGou\"/>
<Player Mute="0" Volume="100" PlayListFormVisible="1" EQFormVisible="0" LRCFormVisible="1" WebFormVisible="1" MiniMo
<Equalizer Enable="0" PreampValue="0" BalanceValue="50" EQSound3DValue="0" PresetIndex="0" BandsGain="0,0,0,0,0,0,0,
<Lyric LRCSavePath="C:\Program Files\KuGou\KuGou2008\Lyric\" LRCStayOnTop="1" AutoShowLRC="1" AutoSaveLRCModify="1"
<Plugin ModulesCount="1" PluginPath="C:\Program Files\KuGou\KuGou2008\ktv98\Plugins\" Module0="dsp_ktv1.dll|0"/>
<Associates Enabled="1">
<FileExt>KGM</FileExt>
<FileExt>MP1</FileExt>
<FileExt>MP2</FileExt>
<FileExt>MP3</FileExt>
<FileExt>WMA</FileExt>
<FileExt>WAV</FileExt>
<FileExt>OGG</FileExt>
<FileExt>APE</FileExt>
<FileExt>M3U</FileExt>
<FileExt>FLAC</FileExt>
<FileExt>CDA</FileExt>
<FileExt>KRC</FileExt>
</Associates>
<AudioDevice DeviceType="0" DeviceIndex="0"/>
<General TaskBarScrollText="1" MagneticSize="10" GlobalHotKeyActionMsg="1" WebBillClickMsg="1" FadeInShowForms="1" M
<PlayBack AutoPlay="0" AutoStopWhenError="1" PlayPriority="0" ContinueLastPlayProgress="0" LastPlayListID="-1" LastP
<PlayList DisableDelFile="0" ItemInfoHint="1" EnablePlaylistDrag="1"/>
<Network StopP2P="0" NetType="0" ProxyType="0" ProxyPort="0" DownPort="26401" DownSpeed="230" UpSpeed="-1" MinBand="
<HotKey GlobalHotKey="1" KeyMap0="閫夐」|112|0" KeyMap1="鎾斁/鏆傚仠|116|49268" KeyMap2="涓婁竴鏇瞸16421|49189" Ke
<Skin AdjustColor="#000000"/>
<Info data1="000000000000"/>
<PersonalInfo OwnUserID="0" InfoVersion="0" Sex="0" Age="0"/>
</KuGoo>

D:\lxmxn\work\perl\test\new>
第18楼 ktv98 发表于 2008-12-05 09:37
初级用户 发帖 81 积分 112
不好意思.让版主生气了.然道你以为我没有动脑吗?我也一直在寻找解决的办法.为解决这个问题我在论坛上一呆一天就是10几个小时.但问题好象并不是你所说的:"关于XML的问题还是用XML的工具比较合适"或许我对XML文件还不是很了解.但你好象并没有注意到出现乱码的问题.

但我还是觉的14楼的zh159说的对:"xml文件是UTF-8编码的,所以不能用BAT来处理 " 问题的关健是如向把UTF-8编码转换成ANSI编码.然后再按照9楼tireless写的代码处理就可以.
现在我其本上找到了解决方案.早上由于还要上班了.晚上回家再把代码发上来.

非常感谢版主关心.(另附我的 KuGoo.xml 文件) 烦请测试

[ Last edited by ktv98 on 2008-12-5 at 14:53 ]

附件
KuGoo.rar (1.67 KiB)
第19楼 HAT 发表于 2008-12-05 09:43
版主 发帖 5,017 积分 9,023
Re 18楼
UTF-8转ANSI的方法,本论坛有。
我在制作电子书的时候也遇到了类似问题,但我没有UTF-8转ANSI,我用的sed,可以直接处理UTF-8嘿嘿。
第20楼 mkd 发表于 2008-12-05 12:33
初级用户 发帖 30 积分 109
第21楼 ktv98 发表于 2008-12-05 14:44
初级用户 发帖 81 积分 112
Originally posted by mkd at 2008-12-5 12:33 PM:
第22楼 ktv98 发表于 2008-12-08 13:01
初级用户 发帖 81 积分 112
经过几天摸索其本解决安装目录下KuGoo.xml文件的修改问题.
要说明一下刚开始我没注意到安装目录下的KuGoo.xml文件是UTF-8编码的.
一开始用9楼tireless兄写的代码进行测试虽然要更换的字符串是可以更换成功了.
但是有的字符却变成乱码.特别是中文部分....出现这个情况.
我以为处理xml文件格式可能需要用xml文件的编辑工具才能完成
但是我对xml文件的编辑工具又不了解(如lxmxn版主所说的关于XML的问题还是用XML的工具比较合适.需要了解一点Xpath方面的知识。)
后来看到14楼zh159兄说:xml文件是UTF-8编码的,所以不能用BAT来处理
我就尝试把KuGoo.xml文件由UTF-8编码转成ANSI编码然后再看看行不行
搜索论坛找到fastslz兄写的文章.用他写的vbs代码将UTF-8编码转成ANSI编码.然后再按9楼tireless写的代码进行测试.
果然成功了.没有出现乱码.(因为乱码的KuGoo.xml文件.酷狗音乐2008的kugoo.exe是无法识别的.)
下面是我综合修改后的代码.希望对有需要的人有用
(非常感谢tireless zh159 fastslz lxmxn版主)

兰色部分是fastslz兄写的VBS代码稍作一点修改
(作用是将KuGoo.xml文件由UTF-8编码转成ANSI编码)

红色部分是9楼tireless兄写的代码
(作用是将<Plugin ModulesCount="0"/>改成
<Plugin PluginPath="C:\Program Files\KuGou\KuGou2008\ktv98\Plugins\" ModulesCount="1" Module0="dsp_ktv1.dll|0"/>



@echo off
taskkill /f /im KuGoo.exe


Echo Set objArgs = WScript.Arguments > UTF82ANSI.vbs
Echo For I = 0 To objArgs.Count - 1 >> UTF82ANSI.vbs
Echo FileUrl = objArgs(I) >> UTF82ANSI.vbs
Echo Call WriteToFile(FileUrl, ReadFile(FileUrl, "UTF-8"), "GB2312") >> UTF82ANSI.vbs
Echo Next >> UTF82ANSI.vbs
Echo Function ReadFile(FileUrl, CharSet) >> UTF82ANSI.vbs
Echo Dim Str >> UTF82ANSI.vbs
Echo Set stm = CreateObject("Adodb.Stream") >> UTF82ANSI.vbs
Echo stm.Type = 2 >> UTF82ANSI.vbs
Echo stm.mode = 3 >> UTF82ANSI.vbs
Echo stm.charset = CharSet >> UTF82ANSI.vbs
Echo stm.Open >> UTF82ANSI.vbs
Echo stm.loadfromfile FileUrl >> UTF82ANSI.vbs
Echo Str = stm.readtext >> UTF82ANSI.vbs
Echo stm.Close >> UTF82ANSI.vbs
Echo Set stm = Nothing >> UTF82ANSI.vbs
Echo ReadFile = Str >> UTF82ANSI.vbs
Echo End Function >> UTF82ANSI.vbs

Echo Function WriteToFile (FileUrl, Str, CharSet) >> UTF82ANSI.vbs
Echo Set stm = CreateObject("Adodb.Stream") >> UTF82ANSI.vbs
Echo stm.Type = 2 >> UTF82ANSI.vbs
Echo stm.mode = 3 >> UTF82ANSI.vbs
Echo stm.charset = CharSet >> UTF82ANSI.vbs
Echo stm.Open >> UTF82ANSI.vbs
Echo stm.WriteText Str >> UTF82ANSI.vbs
Echo stm.SaveToFile FileUrl, 2 >> UTF82ANSI.vbs
Echo stm.flush >> UTF82ANSI.vbs
Echo stm.Close >> UTF82ANSI.vbs
Echo Set stm = Nothing >> UTF82ANSI.vbs
Echo End Function >> UTF82ANSI.vbs

for /f "delims=" %%a in ('dir /s /b /a-d "C:\Program Files"\KuGou\KuGou2008\KuGoo.xml') do UTF82ANSI.vbs "%%a"


set xmlpath="C:\Program Files\KuGou\KuGou2008\KuGoo.xml"
for /f "tokens=1,*" %%a in ('type %xmlpath%') do (
if "%%a" neq "<Plugin" (>>%temp%\#.xml echo.%%a%%b) else (
>>%temp%\#.xml echo.^<Plugin PluginPath="C:\Program Files\KuGou\KuGou2008\ktv98\Plugins\" ModulesCount="1" Module0="dsp_ktv1.dll|0"/^>
)
)
move /y %temp%\#.xml %xmlpath%


del UTF82ANSI.vbs

exit /b
第23楼 HAT 发表于 2008-12-08 13:59
版主 发帖 5,017 积分 9,023
Re 22楼
贴代码的时候能否加上code标签?

Q: 为方便他人复制,如何给代码加code标签?
A: http://www.cn-dos.net/forum/viewthread.php?tid=43735#pid304733
参考:http://www.cn-dos.net/forum/faq.php?page=misc#1
第24楼 ktv98 发表于 2008-12-08 14:48
初级用户 发帖 81 积分 112
Originally posted by HAT at 2008-12-8 01:59 PM:
贴代码的时候能否加上code标签?

Q: 为方便他人复制,如何给代码加code标签?
A: http://www.cn-dos.net/forum/viewthread.php?tid=43735#pid304733
参考:


一直想知道的方法.谢谢HAT版主
第25楼 vkill 发表于 2009-05-01 01:46
金牌会员 发帖 1,744 积分 4,103 来自 甘肃.临泽
重定向后编码确实不是utf-8 了,但是命令行下也有转换文件编码的工具啊,转一下不就好了
第26楼 ccccpp 发表于 2009-05-11 11:53
新手上路 发帖 17 积分 17
正想改一个XML的,学习了,谢谢!
上一页  1 2
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023