返回列表 发帖
回复 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
[url=][/url]

TOP

回复 19# smss


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

TOP

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

回复 22# WHY
现在才空下来测试
中文全部乱码无法用 建议使用昨天那个加入判断和筛选 即可
$global:n = 65; $h = @{};
$s = [IO.File]::ReadAllText('manifest.txt', [Text.Encoding]::Default);
$s = [regex]::Replace($s, '(?<=\bname=")[^"]+(?=")',{param($m);$a=$m.Value; if(!$h.ContainsKey($a)){$h[$a]=[char]($global:n++)}; $h[$a]});
$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});
[IO.File]::WriteAllText('manifest.xml', $s, [Text.Encoding]::UTF8);COPY
这个含中文不乱码 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,所有@和#对应的字符串都会匹配更改
@echo off
setlocal enabledelayedexpansion
set /p "strFile=请拖入处理文本:"
if not exist !strFile! (
echo;"!strFile!" 文件不找不到!!
exit /b
)
rem 定义用于命名的字符表
set ASC=ABCDEFGHIJKLMNOPQRSTUVWXYZ
set n=0
(
for /f "tokens=1* delims==" %%a in (!strFile!) do (
set s1=%%a
set s2=%%b
if "!s1:~-5!" == " name" (
for /f "tokens=1*" %%c in ("%%b") do (
call :getn !n! ss
echo;!s1!="!ss!" %%d
set $!n!=!ss!%%~c
set /a n+=1
)
) else (
echo;!s1!=%%b
)
)
) >temp.txt
set/a n-=1
(
for /f "tokens=*" %%a in (temp.txt) do (
set str=%%a
for /l %%1 in (0,1,!n!) do (
for /f "tokens=1,2 delims=囧" %%b in ("!$%%1!") do (
set str=!str:@%%c=@%%b!
set str=!str:#%%c=#%%b!
)
)
echo;!str!
)
) > 结果.txt
type 结果.txt
rem 查看有多少个更改
set $
pause
exit /b
:getn 计算临名字,可加上前缀
set L=%1
set l1=%1
set %2=
:loop
set /a M=L %% 26
set %2=!ASC:~%M%,1!!%2!
if !L1! neq !L! set /a L=L/26&goto :loop
goto :eofCOPY

TOP

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

TOP

回复 27# smss
你试过这个会出现乱码?
后面加的过滤,改好了!
@echo off
setlocal enabledelayedexpansion
set /p "strFile=请拖入处理文本:"
if not exist !strFile! (
echo;"!strFile!" 文件不找不到!!
exit /b
)
rem 定义用于命名的字符表
set ASC=ABCDEFGHIJKLMNOPQRSTUVWXYZ
set n=0
rem 例外情况定义
set exception=Extra
(
for /f "tokens=1* delims==" %%a in (!strFile!) do (
set s1=%%a
set s2=%%b
if "!s1:%exception%=!!s1:~-5!" == "!s1! name" (
for /f "tokens=1*" %%c in ("%%b") do (
call :getn !n! ss
set sa=%%~c
rem 保留"."后面的尾巴
if "!sa:.=!" neq "!sa!" set ss=!ss!.!sa:*.=!
echo;!s1!="!ss!" %%d
set $!n!=!ss!%%~c
set /a n+=1
)
) else (
echo;!s1!=%%b
)
)
) >temp.txt
set/a n-=1
(
for /f "tokens=*" %%a in (temp.txt) do (
set str=%%a
for /l %%1 in (0,1,!n!) do (
for /f "tokens=1,2 delims=囧" %%b in ("!$%%1!") do (
set str=!str:@%%c=@%%b!
set str=!str:#%%c=#%%b!
)
)
echo;!str!
)
) > 结果.txt
type 结果.txt
rem 查看有多少个更改
set $
pause
exit /b
:getn 计算临名字,可加上前缀
set L=%1
set l1=%1
set %2=
:loop
set /a M=L %% 26
set %2=!ASC:~%M%,1!!%2!
if !L1! neq !L! set /a L=L/26&goto :loop
goto :eofCOPY
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

返回列表