[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 【已解决】批处理如何提取txt文本前120行每20行保存一个文本?

本帖最后由 elec 于 2014-7-7 23:02 编辑

有一个文本,我想将它拖入bat文件中执行:

       提取文本的前120行,将这120行每20行按顺序分割成6个文件,分别保存为aa~ff.txt.
       删除原文本的前120行,更新原文本~~~

      是不是很难??

  1. @echo off
  2. for /f "tokens=1* delims=:" %%a in ('findstr /n .* %~s1') do (
  3. if %%a leq 20 echo %%b >>aa.txt
  4. if %%a leq 40 (if %%a gtr 20 echo %%b >>bb.txt)
  5. if %%a leq 60 (if %%a gtr 40 echo %%b >>cc.txt)
  6. if %%a leq 80 (if %%a gtr 60 echo %%b >>dd.txt)
  7. if %%a leq 100 (if %%a gtr 80 echo %%b >>ee.txt)
  8. if %%a leq 120 (if %%a gtr 100 echo %%b >>ff.txt)
  9. if %%a gtr 120 echo %%b >>"new_%~nx1"
  10. )
  11. move /y "new_%~nx1" "%~nx1"
复制代码
不,很简单

TOP

点击链接加入群【批处理之家①】:http://jq.qq.com/?_wv=1027&k=ML4fnU

TOP

回复 2# 522235677


    非常感谢哈,不过感觉对于大文本有点吃不消~~
    有没有高效率的方法呢?

TOP

回复 4# elec


    批处理就这样,没什么效率高的。第三方工具或许可以,sed 啥的,但我也不懂

TOP

回复 5# 522235677

    还是很谢谢你。自己折腾出方法了,不知道能不能再优化
  1. sed -n "1,20p" "%~1">aa.db
  2. sed -n "21,40p" "%~1">bb.db
  3. sed -n "41,60p" "%~1">cc.db
  4. sed -n "61,80p" "%~1">dd.db
  5. sed -n "81,100p" "%~1">ee.db
  6. sed -n "101,120p" "%~1">ff.db
  7. sed "1,120d" "%~1" > EN_Cut.txt
  8. del "%~1"
复制代码

TOP

这样可以不
  1. @if (0)==(0) echo off
  2. cscript //nologo //E:JScript %0 <a.txt
  3. pause&exit
  4. @end;
  5. var fso = new ActiveXObject("Scripting.FileSystemObject");
  6. var files = ['aa.db','bb.db','cc.db','dd.db','ee.db','ff.db']
  7. var arr = WScript.StdIn.ReadAll().split("\n");
  8. var file = 'EN_Cut.txt'
  9. for (var i=0;i<6;i++){
  10.      var f = fso.OpenTextFile(files[i],2,true);
  11.      f.Write(arr.splice(0,20).join('\n'));
  12.      f.Close();
  13. }
  14. var f = fso.OpenTextFile(file,2,true);
  15. f.Write(arr.join('\n'));
  16. f.Close();
复制代码

TOP

返回列表