[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
回复 14# 523066680
感谢 这个应该怎样使用 我电脑中没有 不是BAT也不是PS?还要安装其它什么吗??

TOP

回复 13# smss


    我测试没有发现你所说的问题。请分别举例说明问题1,问题2

TOP

回复 16# smss


参考:怎样在Windows系统中搭建Python环境?
http://bbs.bathome.net/thread-15581-1-1.html
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

本帖最后由 smss 于 2019-5-22 13:20 编辑

回复 17# WHY
昨天测试了zaqmlp的代码生成的文本在手机上试 手机是直接无法开机刷了一次ROM但锁屏数据还在 只好清数据再刷了次ROM
用BCompare比对原码和生成代码 还是发现不少问题的 目前看那方法 效率较低 自己看不懂这语言只好作罢

你给的方法是目前看到效率最高的 比对原码时变量名能被有效替换 后面关联时也可同步替换 但是有时会出错 我会截图你看

问题1例子 name="city_id"以下统称变量名 被替换成了XML中涉及的运算符号 当该变量名被调用运算时将可能出现 如name="city_id"替换成了name="+" name="city_id2"替换成了name="-"
后边调用这个时x="#city_id+#city_id2"将被替换成x="#++#-"  机器运算不了 这就尴尬啦

TOP

已更新,试试
提供bat代写,为你省时省力省事,支付宝扫码头像支付
微信: unique2random

TOP

本帖最后由 523066680 于 2019-5-23 11:45 编辑

NULL

TOP

回复 19# smss


    有可能变量名超出26个英文字母范围,变成非字母变量名了,已修改。

TOP

本帖最后由 smss 于 2019-5-22 21:09 编辑

回复 22# WHY
现在才空下来测试
中文全部乱码无法用 建议使用昨天那个加入判断和筛选 即可
  1. $global:n = 65; $h = @{};
  2. $s = [IO.File]::ReadAllText('manifest.txt', [Text.Encoding]::Default);
  3. $s = [regex]::Replace($s, '(?<=\bname=")[^"]+(?=")',{param($m);$a=$m.Value; if(!$h.ContainsKey($a)){$h[$a]=[char]($global:n++)}; $h[$a]});
  4. $s = [regex]::Replace($s, '(?<=")[^@#]*[@#][^"]+(?=")',{param($m);$a=$m.Value;forEach($k In $h.Keys){$a=$a.Replace('@'+$k,'@'+$h[$k]).Replace('#'+$k,'#'+$h[$k])};$a});
  5. [IO.File]::WriteAllText('manifest.xml', $s, [Text.Encoding]::UTF8);
复制代码
这个含中文不乱码 XML中含有数组的代码被替换后无法工作

TOP

回复 23# smss


    请举例说明:XML中含有数组的代码被替换后无法工作。
另外,我这里测试中文字符没有乱码,把 [Text.Encoding]::Default 改成 [Text.Encoding]::UTF8 试试

TOP

本帖最后由 smss 于 2019-5-23 11:20 编辑

回复 24# WHY
需要加入以下筛选
系统固定名称别替换
特点<Extra 例如<Extra name="ShowCameraWhenLocked" type="boolean" expression="1"/>
以下名称固定需过滤
name="music_prev"
name="music_display"
name="music_next"
name="music_play"
name="music_pause"
或许还有  最好说明下在哪添加过滤

以.animation .visibility结尾调用需要同步变更(同以# @开头调用)
例如<MusicControl y="#screen_height/2" name="music_control" autoShow="true" visibility="false" enableLyric="true" updateLyricInterval="100"> name="music_control"被替换成了name="A"
<Command target="music_control.animation" value="play"/>
<Command target="music_control.visibility" value="false" condition="not(#appear)" delay="500"/>
需替换成A.animation和A.visibility

TOP

1,只检查第一个等号是否是name="xxxxx",作为要改的名字,
2,所有@和#对应的字符串都会匹配更改
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set /p "strFile=请拖入处理文本:"
  4. if not exist !strFile! (
  5. echo;"!strFile!" 文件不找不到!!
  6. exit /b
  7. )
  8. rem 定义用于命名的字符表
  9. set ASC=ABCDEFGHIJKLMNOPQRSTUVWXYZ
  10. set n=0
  11. (
  12. for /f "tokens=1* delims==" %%a in (!strFile!) do (
  13. set s1=%%a
  14. set s2=%%b
  15. if "!s1:~-5!" == " name" (
  16. for /f "tokens=1*" %%c in ("%%b") do (
  17. call :getn !n! ss
  18. echo;!s1!="!ss!" %%d
  19. set $!n!=!ss!囧%%~c
  20. set /a n+=1
  21. )
  22. ) else (
  23. echo;!s1!=%%b
  24. )
  25. )
  26. ) >temp.txt
  27. set/a n-=1
  28. (
  29. for /f "tokens=*" %%a in (temp.txt) do (
  30. set str=%%a
  31. for /l %%1 in (0,1,!n!) do (
  32. for /f "tokens=1,2 delims=囧" %%b in ("!$%%1!") do (
  33. set str=!str:@%%c=@%%b!
  34. set str=!str:#%%c=#%%b!
  35. )
  36. )
  37. echo;!str!
  38. )
  39. ) > 结果.txt
  40. type 结果.txt
  41. rem 查看有多少个更改
  42. set $
  43. pause
  44. exit /b
  45. :getn 计算临名字,可加上前缀
  46. set L=%1
  47. set l1=%1
  48. set %2=
  49. :loop
  50. set /a M=L %% 26
  51. set %2=!ASC:~%M%,1!!%2!
  52. if !L1! neq !L! set /a L=L/26&goto :loop
  53. goto :eof
复制代码

TOP

回复 26# netbenton
感谢你的热情回复
这个用BAT处理中文会乱码 而且后边加的过滤条件 貌似有点难以做到

TOP

回复 27# smss
你试过这个会出现乱码?
后面加的过滤,改好了!
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set /p "strFile=请拖入处理文本:"
  4. if not exist !strFile! (
  5. echo;"!strFile!" 文件不找不到!!
  6. exit /b
  7. )
  8. rem 定义用于命名的字符表
  9. set ASC=ABCDEFGHIJKLMNOPQRSTUVWXYZ
  10. set n=0
  11. rem 例外情况定义
  12. set exception=Extra
  13. (
  14. for /f "tokens=1* delims==" %%a in (!strFile!) do (
  15. set s1=%%a
  16. set s2=%%b
  17. if "!s1:%exception%=!!s1:~-5!" == "!s1! name" (
  18. for /f "tokens=1*" %%c in ("%%b") do (
  19. call :getn !n! ss
  20. set sa=%%~c
  21. rem 保留"."后面的尾巴
  22. if "!sa:.=!" neq "!sa!" set ss=!ss!.!sa:*.=!
  23. echo;!s1!="!ss!" %%d
  24. set $!n!=!ss!囧%%~c
  25. set /a n+=1
  26. )
  27. ) else (
  28. echo;!s1!=%%b
  29. )
  30. )
  31. ) >temp.txt
  32. set/a n-=1
  33. (
  34. for /f "tokens=*" %%a in (temp.txt) do (
  35. set str=%%a
  36. for /l %%1 in (0,1,!n!) do (
  37. for /f "tokens=1,2 delims=囧" %%b in ("!$%%1!") do (
  38. set str=!str:@%%c=@%%b!
  39. set str=!str:#%%c=#%%b!
  40. )
  41. )
  42. echo;!str!
  43. )
  44. ) > 结果.txt
  45. type 结果.txt
  46. rem 查看有多少个更改
  47. set $
  48. pause
  49. exit /b
  50. :getn 计算临名字,可加上前缀
  51. set L=%1
  52. set l1=%1
  53. set %2=
  54. :loop
  55. set /a M=L %% 26
  56. set %2=!ASC:~%M%,1!!%2!
  57. if !L1! neq !L! set /a L=L/26&goto :loop
  58. goto :eof
复制代码
1

评分人数

TOP

本帖最后由 smss 于 2019-5-23 11:21 编辑


回复 28# netbenton

中文乱码
首<? 被替换成了ï»
尾>被替换成了>=
肉眼可见错误

TOP

回复 25# smss


1. "XML中含有数组的代码被替换后无法工作" 这个问题你没有举例说明;
2. 中文字符乱码问题是否解决你没有交代;
3. 你应该事先总结好规律,哪些改哪些不改,怎么改,事先想好。
2

评分人数

    • 523066680: 辛苦了PB + 6 技术 + 1
    • smss: 这个修改也是个循序渐进的过程,不可能一下考 ...技术 + 1

TOP

返回列表