6楼代码用于 '截取' n1-n2区间行,是掐头去尾取中段,test.bat应更名为 "取中段.bat"
再给一段代码用于 '删除' n1-n2区间行,是留头留尾去中段,test.bat可取名为 "去中段.bat" ,命令行用法如同6楼命令行参数
jscript代码中弃用splice()方法是因其低效,还不如用slice()+concat()
再复课一遍》因采用437字符集编码,可不必在批处理脚本中特别打理与源文件编码对应的chcp...码页切换,用一个“437”即可通吃ansi/utf-8/utf-8+BOM/gbk/gb2312/...- @set @v=1 //&if "%~3" neq "" cscript /e:jscript "%~f0" "%~1" %2 %3 &exit/b
- v = WSH.arguments, as = WSH.createobject('adodb.stream');
- as.mode=3, as.type=2, as.charset='437', as.open, as.loadfromfile(v(0));
- alllines = as.readtext().split('\r\n'), as.close;
- nb = (v(1)<1)? 1: v(1), ne = (v(2)>=alllines.length)? alllines.length: v(2);
- if (nb>ne) WSH.quit();
- for (; alllines.slice(-1)==''; alllines.pop());
- ab = alllines.slice(0, nb-1), ae = alllines.slice(ne), alllines = ab.concat(ae);
- as.open, as.writetext(alllines.join('\r\n'));
- as.savetofile(v(0)+'.new',2), as.close; WSH.quit();
复制代码
|