Board logo

标题: bat批量替换运行速度太慢,求大佬优化一下,微信20元 [打印本页]

作者: 星尘    时间: 2020-7-29 17:09     标题: bat批量替换运行速度太慢,求大佬优化一下,微信20元

具体报酬:20元人民币
支付方式:微信支付宝。
联系方式:qq:874380156
有效期限:第一个测试成功。
这是我之前的帖子http://www.bathome.net/thread-56246-1-1.html
但处理速度太慢的,每次可能要处理几十万的文本文件,求优化,提高速度,代码如下
  1. <#:
  2. cls
  3. @回声关闭
  4. cd / d“%〜dp0”
  5. powershell -NoProfile -ExecutionPolicy绕过“ Invoke-Command -ScriptBlock([ScriptBlock] :: Create([IO.File] :: ReadAllText('%〜f0',[Text.Encoding] :: Default)))-Args'% 〜dp0'“
  6. 暂停
  7. 出口
  8. #>
  9. $ path = $ args [0];
  10. $ list = @ {
  11.     'www.123.com'= @ {'原字符1'='新字符1';'原字符2'='新字符2'};
  12.     'www.456.com'= @ {'原字符1'='新字符1';'原字符2'='新字符2'};
  13.     'www.789.com'= @ {'原字符1'='新字符1';'原字符2'='新字符2'}
  14. };
  15. 函数checkencoding($ t){
  16.     $ tmpenc =新对象System.Text.UTF8Encoding $ False;
  17.     $ m = [regex] :: match($ t,'(?i)<meta。*?charset = [“'']?(gbk | gb2312)');;
  18.     if($ m.Success){$ tmpenc = [Text.Encoding] :: Default;};
  19.     返回$ tmpenc;
  20. };
  21. foreach($ list.keys中的$ k){
  22.     $ folder = $ path + $ k;
  23.     if(test-path -liter $ folder){
  24.         $ files = @(dir -liter $ folder -recurse |?{(@('。html')-包含$ _。Extension)-和($ _ -is [System.IO.FileInfo])}));
  25.         for($ i = 0; $ i -lt $ files.length; $ i ++){
  26.             写主机$ files [$ i] .FullName;
  27.             $ enc =新对象System.Text.UTF8Encoding $ False;
  28.             $ tmptext = [IO.File] :: ReadAllText($ files [$ i] .FullName,$ enc);
  29.             $ enc =检查编码$ tmptext;
  30.             $ oldtext = [IO.File] :: ReadAllText($ files [$ i] .FullName,$ enc);
  31.             foreach($ list [$ k] .keys中的$ j){
  32.                 $ oldtext = $ oldtext.replace($ j,$ list [$ k] [$ j]);
  33.             };
  34.             [IO.File] :: WriteAllText($ files [$ i] .FullName,$ oldtext,$ enc);
  35.         };
  36.     };
  37. }
复制代码

作者: ivor    时间: 2020-7-29 20:59

此帖仅作者可见
作者: 星尘    时间: 2020-7-30 22:31

此帖仅作者可见




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