[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
本帖最后由 523066680 于 2019-5-23 11:46 编辑
  1. use Mojo::DOM;
  2. use File::Slurp;
  3. my $xml = read_file( "test.xml" );
  4. my $dom = Mojo::DOM->new->xml(1)->parse( $xml );
  5. my @code = ('A' .. 'ZZZ');
  6. for my $e ( $dom->find("Variable")->each ) {
  7.     my $k = $e->attr("name");
  8.     $h{$k} = $code[$id++] unless (exists $h{$k});
  9.     $e->attr("name" => $h{$k} );
  10. }
  11. for my $e ( $dom->find("Text")->each ) {
  12.     my $exp = $e->attr("textExp");
  13.     $exp =~s/([\@\#])([\w\_]+)/$1$h{$2}/g;
  14.     $e->attr("textExp"=>$exp);
  15. }
  16. printf "%s\n", $dom;
复制代码
  1. <Variable column="city_id" name="A" type="string" />
  2. <Variable column="city_name" name="B" type="string" />
  3. <Variable column="weather_type" name="C" type="int" />
  4. <Variable column="city_id" name="A" type="string" />
  5. <Text alignV="center" color="#ababab" marqueeGap="2" marqueeSpeed="50" name="Qm" size="30" textExp="@A" w="458" x="100" y="300" />
  6. <Text alignV="center" color="#ababab" marqueeGap="2" marqueeSpeed="50" name="QW" size="30" textExp="#B" w="458" x="100" y="300" />
  7. <Text alignV="center" color="#ababab" marqueeGap="2" marqueeSpeed="50" name="QA" size="30" textExp="#C+#A" w="458" x="100" y="300" />
复制代码

TOP

本帖最后由 523066680 于 2019-5-23 11:45 编辑

NULL

TOP

回复 30# WHY

欢迎过来写感慨:
    提问题的正确方式(反面教材)
    http://www.bathome.net/viewthread.php?tid=51315

TOP

他这个多半是工作需求,商业用途,大概是抬高逆向门槛吧?
其中主要是 XML 的混淆。由于限制了批处理 和 PS,批处理正则不够强,还是 PS 划算。
但是即使用 PS,正则表达式要完美处理[后续可能产生的需求]也会让代码变得很复杂。所以建议是找一个 XML Parser(解析器)模块,PS肯定有,就是不知道需不需要额外安装。
让解析器去把XML变成数据结构,这样自由度就高了。

这样的问题,加价很合理啊。

TOP

名字怕重复可以用 MD5 啊。

TOP

返回列表