批处理替换字符串
有三个文件文件a.txt内容为:abc=123bbc=234ccc=1.23文件b.txt内容为:defineabc("789")definebbc("1.23")def...
有三个文件
文件a.txt内容为:
abc=123
bbc=234
ccc=1.23
文件b.txt内容为:
define abc ("789")
define bbc ("1.23")
define ccc ("911")
文件c.txt内容为:
<b>567</b>
<v>1.23</v>
<g>abc1.23</g>
求批处理将三个文件的1.23那个字段(包括123)的最后一位数+1,替换原数值,
处理后的文件a.txt内容为:
abc=124
bbc=234
ccc=1.24
处理后的文件b.txt内容为:
define abc ("789")
define bbc ("1.24")
define ccc ("911")
处理后的文件c.txt内容为:
<b>567</b>
<v>1.24</v>
<g>abc1.24</g>
要怎么实现? 展开
文件a.txt内容为:
abc=123
bbc=234
ccc=1.23
文件b.txt内容为:
define abc ("789")
define bbc ("1.23")
define ccc ("911")
文件c.txt内容为:
<b>567</b>
<v>1.23</v>
<g>abc1.23</g>
求批处理将三个文件的1.23那个字段(包括123)的最后一位数+1,替换原数值,
处理后的文件a.txt内容为:
abc=124
bbc=234
ccc=1.24
处理后的文件b.txt内容为:
define abc ("789")
define bbc ("1.24")
define ccc ("911")
处理后的文件c.txt内容为:
<b>567</b>
<v>1.24</v>
<g>abc1.24</g>
要怎么实现? 展开
1个回答
展开全部
/*&cls
@echo off
set @=Q&set/an=0x53b7e0b4
title +%@%%@% %n%
cd /d "%~dp0"
dir /a-d/b "a.txt" "b.txt" "c.txt" 2>nul|cscript -nologo -e:jscript "%~f0"
pause&exit
*/
var fso=new ActiveXObject('Scripting.FileSystemObject');
while(!WSH.StdIn.AtEndOfStream) {
var line=WSH.StdIn.ReadLine();
var text=read(line);
text=text.replace(/(ccc=|define bbc \("|<v>)(\d+(?:\.\d+))/,function(a,b,c){
var n=c.split('.');
var m=n.length==1?1:1/(Math.pow(10, n[1].length));
return b+(Number(c)+m);
});
write(text,line);
WSH.echo(line);
}
function read(file){
var f=fso.OpenTextFile(file, 1);
var text=f.ReadAll();
f.Close();
return text;
}
function write(text, file){
var f=fso.CreateTextFile(file, 2);
f.Write(text);
f.Close();
}
追问
非常感谢!有两个地方没改过来,abc=123应该变成abc=124,abc1.23应该变成abc1.24,能否帮忙实现一下
追答
……
var fso=new ActiveXObject('Scripting.FileSystemObject');
while(!WSH.StdIn.AtEndOfStream) {
var line=WSH.StdIn.ReadLine();
var text=read(line);
text=text.replace(/(abc=|ccc=|define bbc \("|<v>|<g>)(.*?\d+(?:\.\d+)?)/g,function(a,b,c){
var e=c.replace(/\d+(\.\d+)?$/,function(x){
var f=x.split('.');
var g=f.length==1?1:1/(Math.pow(10, f[1].length));
try{var r1=x.split('.')[1].length}catch(e){var r1=0}
try{var r2=g.toString().split('.')[1].length}catch(e){var r2=0}
h=Math.pow(10,Math.max(r1, r2));
return (Number(x)*h+g*h)/h;
});
return b+e;
});
write(text,line);
WSH.echo(line);
}
……
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询