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

[原创代码] 求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"/>
复制代码

第一个问题:
  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
复制代码

TOP

第二个问题, x="#sw-270/1.5+15*2-5" 结果凭什么是 x="#sw-205" ?
-270/1.5+15*2-5=-155

TOP

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

回复 3# WHY

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

TOP

返回列表