标题: bat批量替换运行速度太慢,求大佬优化一下,微信20元 [打印本页]
作者: 星尘 时间: 2020-7-29 17:09 标题: bat批量替换运行速度太慢,求大佬优化一下,微信20元
具体报酬:20元人民币
支付方式:微信支付宝。
联系方式:qq:874380156
有效期限:第一个测试成功。
这是我之前的帖子http://www.bathome.net/thread-56246-1-1.html
但处理速度太慢的,每次可能要处理几十万的文本文件,求优化,提高速度,代码如下- <#:
- cls
- @回声关闭
- cd / d“%〜dp0”
- powershell -NoProfile -ExecutionPolicy绕过“ Invoke-Command -ScriptBlock([ScriptBlock] :: Create([IO.File] :: ReadAllText('%〜f0',[Text.Encoding] :: Default)))-Args'% 〜dp0'“
- 暂停
- 出口
- #>
- $ path = $ args [0];
-
- $ list = @ {
- 'www.123.com'= @ {'原字符1'='新字符1';'原字符2'='新字符2'};
- 'www.456.com'= @ {'原字符1'='新字符1';'原字符2'='新字符2'};
- 'www.789.com'= @ {'原字符1'='新字符1';'原字符2'='新字符2'}
- };
-
- 函数checkencoding($ t){
- $ tmpenc =新对象System.Text.UTF8Encoding $ False;
- $ m = [regex] :: match($ t,'(?i)<meta。*?charset = [“'']?(gbk | gb2312)');;
- if($ m.Success){$ tmpenc = [Text.Encoding] :: Default;};
- 返回$ tmpenc;
- };
-
- foreach($ list.keys中的$ k){
- $ folder = $ path + $ k;
- if(test-path -liter $ folder){
- $ files = @(dir -liter $ folder -recurse |?{(@('。html')-包含$ _。Extension)-和($ _ -is [System.IO.FileInfo])}));
- for($ i = 0; $ i -lt $ files.length; $ i ++){
- 写主机$ files [$ i] .FullName;
- $ enc =新对象System.Text.UTF8Encoding $ False;
- $ tmptext = [IO.File] :: ReadAllText($ files [$ i] .FullName,$ enc);
- $ enc =检查编码$ tmptext;
- $ oldtext = [IO.File] :: ReadAllText($ files [$ i] .FullName,$ enc);
- foreach($ list [$ k] .keys中的$ j){
- $ oldtext = $ oldtext.replace($ j,$ list [$ k] [$ j]);
- };
- [IO.File] :: WriteAllText($ files [$ i] .FullName,$ oldtext,$ enc);
- };
- };
- }
复制代码
作者: ivor 时间: 2020-7-29 20:59
此帖仅作者可见
作者: 星尘 时间: 2020-7-30 22:31
此帖仅作者可见
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |