[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

100元人民币 求bat或Powershell处理文本内容【已解决】

本帖最后由 smss 于 2019-6-26 11:23 编辑

具体报酬:100元人民币
支付方式:支付宝微信转账
联系方式:QQ296578353
有效期限:功能实现之前

批量替换文本中的指定内容 文本类似以下
<Variable name="city_id" type="string" column="city_id"/>
<Variable name="weather_location" type="string" column="city_name"/>
<Variable name="weather_id" type="int" column="weather_type"/>
<Variable name="city_id" type="string" column="city_id"/>

<Text name="Qm" x="100" y="300" w="458" alignV="center" color="#ababab" size="30" textExp="@city_id" marqueeSpeed="50" marqueeGap="2"/>
<Text name="QW" x="100" y="300" w="458" alignV="center" color="#ababab" size="30" textExp="#weather_location" marqueeSpeed="50" marqueeGap="2"/>
<Text name="QA" x="100" y="300" w="458" alignV="center" color="#ababab" size="30" textExp="#weather_id+#city_id" marqueeSpeed="50" marqueeGap="2"/>
需要把文本中
name="city_id"替换成name="A" name="weather_location"替换成name="B"以此类推顺序是从上到下 把每一个name=""中的名称替换为A B C D...如果超26字母那么就以AA AB AC...AAA AAB AAC...这种命名或类似你能想到不重名的方式来命名(但需要规避运算符号 如把一个名称替换成了*那么后边调用这个变量时就面临一个致命问题 #*+#-  使得代入不了运算  因此名称中不要出现运算符号 需要规避符号 +,-,*,/,%,**,|,||,=,==, !,not)
注意:如果名称出现2次以上 如name="city_id" 也需要把name="city_id"替换为name="A" 后续文本中如有关联那么也需要同步变更 特点是会在变量名前加#或@如下例子
希望得到如下文本
<Variable name="A" type="string" column="city_id"/>
<Variable name="B" type="string" column="city_name"/>
<Variable name="C" type="int" column="weather_type"/>
<Variable name="A" type="string" column="city_id"/>
<Text name="D" x="100" y="300" w="458" alignV="center" color="#ababab" size="30" textExp="@A" marqueeSpeed="50" marqueeGap="2"/>
<Text name="E" x="100" y="300" w="458" alignV="center" color="#ababab" size="30" textExp="#B" marqueeSpeed="50" marqueeGap="2"/>
<Text name="F" x="100" y="300" w="458" alignV="center" color="#ababab" size="30" textExp="#C+#A" marqueeSpeed="50" marqueeGap="2"/>

注意textExp不是固定调用以上变量名的 x="100" y="300" color="#ababab" size="30" 都可以调用 如x="#city_id" 需要变更为x="#A"

1实现替换name="" 中名称,使其变为无意义的字母或其它任何你知道的不重名的方式 让他人无法根据名称直接得知用途
2如果一个名称多次出现如下相同名称 那么需要替换成相同名称

<VariableCommand name="time_count" type="number[]" index="0" expression="0" />
<VariableCommand name="time_count" type="number[]" index="1" expression="0" />
<VariableCommand name="time_count" type="number[]" index="2" expression="0" />
<VariableCommand name="time_count" type="number[]" index="3" expression="0" />
变成
<VariableCommand name="B" type="number[]" index="0" expression="0" />
<VariableCommand name="B" type="number[]" index="1" expression="0" />
<VariableCommand name="B" type="number[]" index="2" expression="0" />
<VariableCommand name="B" type="number[]" index="3" expression="0" />
3如果name="tms0" 变成name="A"后续调用时 如#tms0或@tms0要同步这个名称变为#A @A

以下文本测试时使用
  1. <Group x="540" y="483" w="#tms_w" align="center" pivotX="#tms_w/2" pivotY="0" scale="ifelse(#time_hour0}0,0.85,1)">
  2. <!-- 小时 -->
  3. <Time name="tms0" x="0" y="0" src="ToolsScreen_src/timing/number/number.png" space="2" formatExp="ifelse(#time_hour0}0,#time_hour0,'')+#time_hour1+#time_hour2+':'" visibility="(#time_hour0+#time_hour1+#time_hour2)}0"/>
  4. <!-- 分钟 : 秒 -->
  5. <Time name="tms1" x="#tms0.bmp_width" y="0" src="ToolsScreen_src/timing/number/number.png" space="2" formatExp="#time_minute1+#time_minute2+':'+#time_second1+#time_second2" />
  6. <!-- 毫秒 -->
  7. <Time name="milis1" x="#tms0.bmp_width+#tms1.bmp_width" y="0" src="ToolsScreen_src/timing/number/number.png" space="2" formatExp="'.'+#time_millisecond1+#time_millisecond2" />
  8. </Group>
  9. <Text x="540" y="425" align="center" size="30" color="#ffffff" text="最多计数4次哦" visibility="#timing_count==5" alpha="510*#start_ani"/>
  10. </Group>
  11. </Group>
  12. <Var name="time_count" type="number[]" size="4" const="true"/>
  13. <!-- #count_y_ani/2.06 -->
  14. <Array x="0" y="0+100*(1-#start_ani)+200-#count_y_ani/2.06" count="4" indexName="__count" alpha="510*#start_ani">
  15. <Group y="103*#__count" visibility="#__count{#timing_count*#start_ani">
  16. <!-- 序号 0-4 -->
  17. <Text x="245" y="984" size="27" color="#ffffff" textExp="'0'+int(#__count+1)"/>
  18. <!-- + 00:00.00 上次计时到本次间隔时间 -->
  19. <!-- <Text x="585" y="980" align="right" size="34" color="#ffffff" textExp="'+ '+'00:00.00'" alpha="180"/> -->
  20. <Text x="585" y="980" align="right" size="34" color="#ffffff" textExp="'+ '+int((#time_count[#__count]-#time_count[#__count-1])/1000%3600/60/10)+int((#time_count[#__count]-#time_count[#__count-1])/1000%3600/60%10)+':'+int((#time_count[#__count]-#time_count[#__count-1])/1000%60/10)+int((#time_count[#__count]-#time_count[#__count-1])/1000%60%10)+'.'+int((#time_count[#__count]-#time_count[#__count-1])/100%10)+int((#time_count[#__count]-#time_count[#__count-1])/10%10)" alpha="180"/>
  21. <!-- 本次计时时间:上次结束的时间+本次计次时间 -->
  22. <!-- <Text x="840" y="980" align="right" size="34" color="#ffffff" textExp="'02:30.25'" /> -->
  23. <Text x="840" y="980" align="right" size="34" color="#ffffff" textExp="int(#time_count[#__count]/1000%3600/60/10)+int(#time_count[#__count]/1000%3600/60%10)+':'+int(#time_count[#__count]/1000%60/10)+int(#time_count[#__count]/1000%60%10)+'.'+int(#time_count[#__count]/100%10)+int(#time_count[#__count]/10%10)"/>
  24. <Rectangle x="239" y="1047-1" w="646" h="2" fillColor="#ffffff" alpha="25" />
  25. </Group>
  26. </Array>
  27. <Var name="start_ani">
  28. <VariableAnimation name="startAni" initPause="true" loop="false">
  29. <AniFrame value="0" time="0" easeType="QuadEaseOut"/>
  30. <AniFrame value="1" time="300" easeType="QuadEaseOut"/>
  31. <AniFrame value="0" time="600" />
  32. <Triggers>
  33. <Trigger action="end" condition="#startAni.current_frame==600">
  34. <VariableCommand name="start_on" expression="0" persist="true"/>
  35. <VariableCommand name="start_pause" expression="0" persist="true"/>
  36. <VariableCommand name="time_count" type="number[]" index="0" expression="0" />
  37. <VariableCommand name="time_count" type="number[]" index="1" expression="0" />
  38. <VariableCommand name="time_count" type="number[]" index="2" expression="0" />
  39. <VariableCommand name="time_count" type="number[]" index="3" expression="0" />
  40. <VariableCommand name="timing_count" expression="0" persist="true" />
  41. </Trigger>
  42. </Triggers>
  43. </VariableAnimation>
  44. </Var>
  45. <Var name="count_y_ani">
  46. <VariableAnimation initPause="true" loop="false">
  47. <AniFrame value="#count_y_ani" time="0" easeType="QuadEaseOut"/>
  48. <AniFrame value="min(#timing_count,4)*103" time="300" easeType="QuadEaseOut"/>
  49. <AniFrame value="0" time="800"/>
  50. </VariableAnimation>
  51. </Var>
  52. <Group x="0" y="#count_y_ani/4.12" >
  53. <!-- 计次/停止(重置) -->
  54. <Image x="540-130*#start_ani" y="1420" pivotX="78" pivotY="78" align="center" alignV="center"  srcExp="'ToolsScreen_src/timing/'+ifelse(#start_pause==1,'Stop','count')+'.png'" visibility="#start_on==1"/>
  55. <Button x="540-130*#start_ani" y="1420" w="156" h="156" visibility="#start_on==1" align="center" alignV="center">
  56. <Pressed>
  57. <Image x="540-130*#start_ani" y="1420" src="ToolsScreen_src/timing/pressed.png" alpha="30" align="center" alignV="center"/>
  58. </Pressed>
  59. <Triggers>
  60. <!-- 计次 -->
  61. <Trigger action="up" condition="#start_pause==0">
  62. <VariableCommand name="timing_count" expression="min(#timing_count+1,5)" persist="true" />
  63. <VariableCommand name="time_count" type="number[]" index="#timing_count-1" expression="#Time_total" persist="true"/>
  64. <AnimationCommand target="count_y_ani" command="play(0,300)" />
  65. <VariableCommand name="time_count0" expression="#time_count[0]" persist="true"/>
  66. <VariableCommand name="time_count1" expression="#time_count[1]" persist="true"/>
  67. <VariableCommand name="time_count2" expression="#time_count[2]" persist="true"/>
  68. <VariableCommand name="time_count3" expression="#time_count[3]" persist="true"/>
  69. </Trigger>
  70. <!-- 停止(重置) -->
  71. <Trigger action="up" condition="#start_pause==1">
  72. <AnimationCommand target="count_y_ani" command="play(300,800)" />
  73. <AnimationCommand target="clock_minute_ani" command="play(0,500)" condition="#clock_minute_ani==0"/>
  74. <AnimationCommand target="start_ani" command="play(300,600)" condition="#start_ani==1"/>
  75. </Trigger>
  76. </Triggers>
  77. </Button>
  78. <!-- 开始/继续/暂停 -->
  79. <Image x="540+130*#start_ani" y="1420" pivotX="78" pivotY="78" align="center" alignV="center" srcExp="'ToolsScreen_src/timing/'+ifelse(#start_on==0||#start_pause==1,'start','pause')+'.png'" />
  80. <Button x="540+130*#start_ani" y="1420" w="156" h="156" align="center" alignV="center" >
  81. <Pressed>
  82. <Image x="540+130*#start_ani" y="1420" src="ToolsScreen_src/timing/pressed.png" align="center" alignV="center" alpha="30"/>
  83. </Pressed>
  84. <Triggers>
  85. <!-- 开始 -->
  86. <Trigger action="up" condition="#start_on==0">
  87. <VariableCommand name="start_on" expression="1" persist="true" delay="10"/>
  88. <VariableCommand name="Start_timing" expression="#time_sys" persist="true"/>
  89. <VariableCommand name="Time_total" expression="0" persist="true" />
  90. <AnimationCommand target="start_ani" command="play(0,300)" condition="#start_ani==0"/>
  91. </Trigger>
  92. <Trigger action="up" condition="#start_on==1">
  93. <!-- 继续 -->
  94. <VariableCommand name="Start_timing" expression="#time_sys" persist="true" condition="#start_pause==1"/>
  95. <!-- 暂停 -->
  96. <VariableCommand name="Time_total_pause" expression="#Time_total" persist="true" condition="#start_pause==0"/>
  97. <VariableCommand name="start_pause" expression="int(#start_pause+1)%2" persist="true" />
  98. </Trigger>
  99. </Triggers>
  100. </Button>
  101. <!-- 返回按钮 -->
  102. <Image x="540" y="1700" src="ToolsScreen_src/back.png" align="center" alignV="center" touchable="true" alpha="170+50*#back_flag">
  103. <Triggers>
  104. <Trigger action="down">
  105. <VariableCommand name="back_flag" expression="1"/>
  106. </Trigger>
  107. <Trigger action="up">
  108. <VariableCommand name="back_flag" expression="0"/>
  109. <AnimationCommand target="init_tools_ani" command="play(800,0)"  condition="#init_tools_ani==1"/>
  110. </Trigger>
  111. </Triggers>
  112. </Image>
  113. </Group>
  114. <Button w="1080" h="#screen_height" interceptTouch="true"/>
  115. </Group>
复制代码

回复 2# zaqmlp
只实现了替换变量名

TOP

本帖最后由 smss 于 2019-5-22 10:44 编辑
zaqmlp 发表于 2019-5-21 22:54

上次那代码可以换名称 你改后 就一片红了

TOP

回复 6# amwfjhh
Win10怎样安装这个??

TOP

本帖最后由 smss 于 2019-5-22 00:53 编辑

回复 7# WHY 写的太棒了
有个小问题可以处理下吗 就是其中有数组时共用同一个名称是要替换成同名称的 虽然也替换成同名了 单生成的XTX文本 可以被读取 但部分功能不在
说明 混编时还是有问题

TOP

回复 10# amwfjhh

哥楼上有更好更简短有力的代码 而且我已支付给了1楼一半的钱

不过我更倾向于WHY的方法 化繁为简 效率高

TOP

回复 7# WHY

有如下几个问题
1.名称中不要出现运算符号 如name="call_name1" 居然替换成了*或/

需要规避符号 +,-,*,/,%,**,|,||,=,==, !,not

2数组不能使用或许是上个问题导致

TOP

回复 14# 523066680
感谢 这个应该怎样使用 我电脑中没有 不是BAT也不是PS?还要安装其它什么吗??

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

本帖最后由 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

本帖最后由 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

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

TOP

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


回复 28# netbenton

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

TOP

本帖最后由 smss 于 2019-5-23 15:12 编辑

回复 31# WHY
目前有这么个问题 当名字后有个数字时无法正确替换 如图

下面name="BallAniAlpha"已替换为name="EE" alpha="#BallAniAlpha*255"却被替换成了alpha="#EFAlpha*255" 应该为alpha="#EE*255"

例子<AnimationCommand target="BallAniAlpha" command="play"/>需替换为<AnimationCommand target="EE" command="play"/> 特点是包含command="play"target="变量名"

<Var name="BallAni" >被替换成了EF alpha="#BallAniAlpha*255"却被替换成了alpha="#EFAlpha*255"


还有一个是 文本c中关联文本a中变量名,希望也同步替换,生成文本d
文本c特点如下 id="Paper"  如果文本a中的 name="Paper"替换成了name="A" 那么文本c中id="Paper" 也需同步变更为id="A"
<Config>
<Group text="功能选项">
<CheckBox text="随机壁纸" summary="" id="Paper" default="1"/>
<CheckBox text="系统壁纸" summary="" id="Using" default="0"/>
<CheckBox text="重力壁纸" summary="" id="bg" default="0"/>
</Group>
</Config>

TOP

回复  smss


1. "XML中含有数组的代码被替换后无法工作" 这个问题你没有举例说明;
2. 中文字符乱码问 ...
WHY 发表于 2019-5-23 11:22

我先处理简单的再处理包含数组的,任何事都是由简入繁吧

TOP

返回列表