找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 20301|回复: 3

[原创代码] 求PowerShell批量计算文本指定数值后替换原值

[复制链接]
发表于 2019-7-17 14:01:05 | 显示全部楼层 |阅读模式
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"/>
复制代码
发表于 2019-7-23 10:04:21 | 显示全部楼层
第一个问题:
  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
复制代码
发表于 2019-7-23 10:11:58 | 显示全部楼层
第二个问题, x="#sw-270/1.5+15*2-5" 结果凭什么是 x="#sw-205" ?
-270/1.5+15*2-5=-155
 楼主| 发表于 2019-7-23 20:13:34 | 显示全部楼层
本帖最后由 smss 于 2019-7-23 20:15 编辑

回复 3# WHY

举例 需要可以完成+-*/运算
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 01:06 , Processed in 0.011780 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表