标题: 20元求脚本替换文本内容,问题描述如下: [打印本页]
作者: 1432689025 时间: 2019-7-17 17:05 标题: 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 method
复制代码
src的内容如下:- .method protected getIsVip()V
- .locals 3
-
- .prologue
- const/4 v0, 0x1
-
- return v0
- .end method
复制代码
需要把dst里面的方法换成:- .method protected getIsVip()V
- .locals 3
- .prologue
- const/4 v0, 0x0
-
- return v0
- .end method
复制代码
这个字段区间里面的内容全部换成 src 里面的文本内容 :- .method protected getIsVip()V
- .locals 3
- .prologue
- const/4 v0, 0x1
-
- return v0
- .end method
复制代码
作者: zaqmlp 时间: 2019-7-17 17:15
费用、联系方式呢
作者: 1432689025 时间: 2019-7-17 17:19
我的思路是:
(1)先找到 Test 文件中的 dst 文件 ,然后读取.method protected getIsVip()V的所在行,记录下此时的行号 %StartLineNumber%,然后继续查找与.method protected getIsVip()V相匹配的.end method,同样记录此时的.end method所在的行号%EndLineNumber%。
(2) 此时读取src文件内的所有文本内容,直接替换掉%StartLineNumber%所在行和%EndLineNumber%所在行的内容即可。
PS:每个人的码风不太一样,能实现就好,互相交流学习,请大家多多指教。
作者: 1432689025 时间: 2019-7-17 17:29
回复 2# zaqmlp
Twenty Yuan. E-mail :1432689025@qq.com
作者: flashercs 时间: 2019-7-17 18:36
本帖最后由 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();
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |