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

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. }
复制代码

此帖仅作者可见

TOP

此帖仅作者可见
#&cls&@powershell "Invoke-Expression ([Io.File]::ReadAllText('%~0',[Text.Encoding]::UTF8))" &pause&exit

TOP

返回列表