西西软件园多重安全检测下载网站、值得信赖的软件下载站!
软件
软件
文章
搜索

首页编程开发其它知识 → WSH实现批量替换多个文件中的指定字符串

WSH实现批量替换多个文件中的指定字符串

相关软件相关文章发表评论 来源:本站整理时间:2011/1/13 11:03:42字体大小:A-A+

作者:佚名点击:93次评论:3次标签: 批量替换 WSH

  • 类型:磁盘工具大小:18.8M语言:中文 评分:5.2
  • 标签:
立即下载

 看到有人用Dos命令写,看了看For指令头晕。于是用WSH脚本写一个,忙活完了发现不支持UTF-8。
WSH的FSO只支持ANSI,UTF-16,ASCII三种编码...

下面是代码了,保存为.wsf后缀双击运行。extensionReg是文件后缀的正则表达式,replacePair是替换规则。
replacePair可以包含多个替换,每个替换是一个数组元素,也是一个对象,此对象reg属性是匹配规则,str属性是要替换的字条串。

<job id="main">
<script language="JScript">
// Note: This script will not function correctly with non-ANSI Encoding files.
// ################################ Settings ####################### /
// File's extension
var extensionReg = /^.+\.(xml|txt)$/ig;
// Replace rules
// The replacePair Array contains multiple replacement rule objects.
// Each object contains reg and str property.
// The reg property is a Regular Expression
// and the str property replaces every successful match of reg.
var replacePair = [{reg:/\<VALUE\>[^<>]*\<\/value\>/ig, str:"###value###"},
{reg:/\<LABEL\>[^<>]*\<\/label\>/ig, str:"###label###"}];
// ####################################################################### /
// Constant
var WshShell = WScript.CreateObject("WScript.Shell");
var ForReading = 1, ForWriting = 2, ForAppending = 8;
var ANSI = -2, UTF-16 = -1, ASCII = 0;
var fso = new ActiveXObject("Scripting.FileSystemObject");

// Current Folder
var curFolder = fso.GetFolder(WshShell.CurrentDirectory);
// iterator of Files in the current folder
var fc = new Enumerator(curFolder.files);
var counter = 0;
// loop though files
for (; !fc.atEnd(); fc.moveNext())
{
var file = fc.item();
var filefileName = file.Name;
// test of file name match
if (fileName.search(extensionReg) == -1)
continue;
var content = readAllFromFile(file.Path);
var contentcontentRet = content;
var pc = new Enumerator(replacePair);
for (; !pc.atEnd(); pc.moveNext()) {
var replaceItem = pc.item();
contentRetcontentRet = contentRet.replace(replaceItem.reg, replaceItem.str);
}
if (contentRet != content) {
writeStrToFile(file.Path, contentRet);
++counter;
}
}
// Show the result with OK button and "Information Mark" icon.
WshShell.Popup(counter + " files has been replaced.", 0, "Result", 0 + 64);

function readAllFromFile(path) {
var ret = "";
var ts = fso.OpenTextFile(path, ForReading, false, ANSI);
if (!ts.AtEndOfStream)
ret = ts.ReadAll();
ts.Close();
return ret;
}

function writeStrToFile(path, str) {
var ts = fso.OpenTextFile(path, ForWriting, true, ANSI);
ts.Write(str);
ts.Close();
}

// Debug
function trace(msg) {
WScript.Echo(msg);
WScript.Quit();
}
</script>
</job>

    相关评论

    阅读本文后您有什么感想? 已有人给出评价!

    • 8 喜欢喜欢
    • 3 顶
    • 1 难过难过
    • 5 囧
    • 3 围观围观
    • 2 无聊无聊

    热门评论

    最新评论

    发表评论 查看所有评论(3)

    昵称:
    表情: 高兴 可 汗 我不要 害羞 好 下下下 送花 屎 亲亲
    字数: 0/500 (您的评论需要经过审核才能显示)