Board logo

标题: [原创代码] 求PowerShell批量计算文本指定数值后替换原值 [打印本页]

作者: smss    时间: 2019-7-17 14:01     标题: 求PowerShell批量计算文本指定数值后替换原值

1.文本A.xml中有大量数值需要除以1.5 有余数时4舍5入保留小数点后2位
例句
  1. <Group pivotX="360" pivotY="933" scale="#init_tools_ani" alpha="255*#init_tools_ani" visibility="#set_tools_num==3">
复制代码
生成
  1. <Group pivotX="240" pivotY="622" scale="#init_tools_ani" alpha="255*#init_tools_ani" visibility="#set_tools_num==3">
复制代码
过滤掉 alpha="" visibility=""之类的属性

2.计算文本B.xml中所有可计算的数值
计算所有""之间的(数字加运算符号数值) 运算符含+-*/ (加减乘除)  
过滤掉 color="" fillColor="" strokeColor="" color=""的值 如color="#6f7480"fillColor="#ffffff" strokeColor="#cdcdcd"
例句
  1. <text  x="#sw-270/1.5+15*2-5" y="78.33" align="center" alignV="center" size="53.33" color="#6f7480" text="AC"/>
复制代码
生成
  1. <text  x="#sw-205" y="78.33" align="center" alignV="center" size="53.33" color="#6f7480" text="AC"/>
复制代码

作者: WHY    时间: 2019-7-23 10:04

第一个问题:
  1. $str = [IO.File]::ReadAllText('1.txt', [Text.Encoding]::Default);
  2. $str = [regex]::Replace($str, '(?<==")\d*\.?\d+(?=")', { param($a); [int](100*$a.Value/1.5)/100 });
  3. sc 2.txt $str -Enc UTF8
复制代码

作者: WHY    时间: 2019-7-23 10:11

第二个问题, x="#sw-270/1.5+15*2-5" 结果凭什么是 x="#sw-205" ?
-270/1.5+15*2-5=-155
作者: smss    时间: 2019-7-23 20:13

本帖最后由 smss 于 2019-7-23 20:15 编辑

回复 3# WHY

举例 需要可以完成+-*/运算




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2