• 微软原版系统

  • 一键重装系统

  • 纯净系统

  • 在线技术客服

魔法猪系统重装大师 一键在线制作启动 U 盘 PE 系统 用一键重装的魔法拯救失去灵魂的系统
当前位置:首页 > 教程 > 电脑教程

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

时间:2015年04月02日 15:38:12    来源:魔法猪系统重装大师官网    人气:15685

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

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


<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\>/ig, str:"###value###"},
{reg:/\]*\<\/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>

WSH,实现,批量,替换,多个,文件,中的,指定,看,
栏目:电脑教程 阅读:1000 2023/12/27
Win7教程 更多>>
U盘教程 更多>>
Win10教程 更多>>
魔法猪学院 更多>>

Copyright © 2015-2023 魔法猪 魔法猪系统重装大师

本站发布的系统仅为个人学习测试使用,请在下载后24小时内删除,不得用于任何商业用途,否则后果自负,请支持购买微软正版软件。

在线客服 查看微信 返回顶部