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

加我q
提供bat代写,为你省时省力省事,支付宝扫码头像支付
微信: unique2random

TOP

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

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

TOP

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

TOP

本帖最后由 zaqmlp 于 2019-5-22 10:12 编辑
  1. @echo off
  2. cd /d "%~dp0"
  3. set "folder=结果"
  4. md "%folder%" 2>nul
  5. powershell -NoProfile -ExecutionPolicy bypass ^
  6.     $files=@(dir^|?{($_ -is [System.IO.FileInfo]) -and ($_.Extension -eq '.xml')});^
  7.     $arr='ABCDEFGHIJKLMNOPQRSTUVWXYZ'.toCharArray();^
  8.     for($i=0;$i -lt $files.length;$i++){^
  9.         write-host $files[$i].Name;^
  10.         $dic=New-Object 'System.Collections.Generic.Dictionary[string,string]';^
  11.         $list=New-Object 'System.Collections.Generic.Dictionary[string,string]';^
  12.         $text=[IO.File]::ReadAllText($files[$i].FullName, [Text.Encoding]::UTF8);^
  13.         $m=[regex]::matches($text,'name=\""([^^\""]+)\""');^
  14.         $newtext=$text;^
  15.         if($m.Count -ge 1){^
  16.             for($j=0;$j -lt $m.Count;$j++){^
  17.                 $kw=$m[$j].groups[1].value;^
  18.                 if(@('=','%%') -notcontains $kw){^
  19.                     if(-not $dic.ContainsKey($kw)){^
  20.                         $c=@(get-random -input $arr -count 3) -join '';^
  21.                         while($list.ContainsKey($c)){$c=@(get-random -input $arr -count 3) -join '';};^
  22.                         $list.add($c,'');^
  23.                         $newtext=$newtext.replace($m[$j].groups[0].value,'name=\"'+$c+'\"');^
  24.                         $dic.add($kw,$c);^
  25.                         $n++;^
  26.                     };^
  27.                 };^
  28.             };^
  29.             $k=@($dic.keys^|sort {$_.length} -des);^
  30.             $newtext=[regex]::replace($newtext,'(?^<==)\""[^^\""]+?\""',{param($a);$b=$a.value;foreach($it in $k){$b=$b.replace(('@'+$it),('@'+$dic[$it])).replace(('#'+$it),('#'+$dic[$it]));};$b});^
  31.             [IO.File]::WriteAllText(('%folder%\'+$files[$i].Name), $newtext, [Text.Encoding]::UTF8);^
  32.         };^
  33.     }
  34. pause
复制代码
提供bat代写,为你省时省力省事,支付宝扫码头像支付
微信: unique2random

TOP

返回列表