返回列表 发帖

20元求脚本替换文本内容,问题描述如下:

问题描述:
当前路径下存在Test文件夹,Test下面有两个文本文件,需要包含 .method XXX 开始的字符串到下一个
.end method的内容全部用src里面的内容替换掉,包换 .method XXX 和.end method所在的行。
层级:
Test\dst
Test\src
文件内容:
dst的内容如下:
# virtual methods
.method protected canAcceleration()Z
    .locals 5
    .prologue
    .line 914
    const/4 v0, 0x0
    return v0
.end method
.method protected getIsVip()V
    .locals 3
    .prologue
    const/4 v0, 0x0
    return v0
.end methodCOPY
src的内容如下:
.method protected getIsVip()V
    .locals 3
    .prologue
    const/4 v0, 0x1
    return v0
.end methodCOPY
需要把dst里面的方法换成:
.method protected getIsVip()V
    .locals 3
    .prologue
    const/4 v0, 0x0
    return v0
.end methodCOPY
这个字段区间里面的内容全部换成 src 里面的文本内容 :
.method protected getIsVip()V
    .locals 3
    .prologue
    const/4 v0, 0x1
    return v0
.end methodCOPY

费用、联系方式呢
提供bat代写,为你省时省力省事,支付宝扫码头像支付
微信: unique2random

TOP

我的思路是:
(1)先找到 Test 文件中的 dst 文件 ,然后读取.method protected getIsVip()V的所在行,记录下此时的行号 %StartLineNumber%,然后继续查找与.method protected getIsVip()V相匹配的.end method,同样记录此时的.end method所在的行号%EndLineNumber%。
(2) 此时读取src文件内的所有文本内容,直接替换掉%StartLineNumber%所在行和%EndLineNumber%所在行的内容即可。
PS:每个人的码风不太一样,能实现就好,互相交流学习,请大家多多指教。

TOP

回复 2# zaqmlp
Twenty Yuan. E-mail :1432689025@qq.com

TOP

本帖最后由 flashercs 于 2019-7-17 18:51 编辑

保存为test.bat ,放在Test文件夹所在目录下,双击运行即可。
0<1/*,:
@echo off
cscript -nologo -e:jscript %0
pause
exit /b
*/
;
var fso = new ActiveXObject('Scripting.FileSystemObject');
var wshell = new ActiveXObject('WScript.Shell');
wshell.CurrentDirectory = fso.GetParentFolderName(WScript.ScriptFullName);
var srcfile = 'Test\\src';
var dstfile = 'Test\\dst';
var tsread = fso.openTextFile(srcfile, 1, false, -2);
while (!tsread.AtEndOfStream) {
  var strsrc = tsread.ReadAll();
}
tsread.close();
var re = /(\.method\s+.+)[\s\S]*?\.end\s+method/g;
var arrsrc, objsrc = {};
while (arrsrc = re.exec(strsrc)) {
  objsrc[arrsrc[1]] = arrsrc[0];
}
tsread = fso.openTextFile(dstfile, 1, false, -2);
while (!tsread.AtEndOfStream) {
  var strdst = tsread.ReadAll();
}
tsread.close();
var tswrite = fso.openTextFile(dstfile, 2, false, -2);
tswrite.Write(strdst.replace(re, function ($0, $1) {
  return objsrc.hasOwnProperty($1) ? objsrc[$1] : $0;
}));
tswrite.close();
WScript.Echo('Done.');
WScript.Quit();COPY
微信:flashercs
QQ:49908356

TOP

返回列表