找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 23733|回复: 6

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

[复制链接]
发表于 2014-6-7 14:11:20 | 显示全部楼层 |阅读模式
本帖最后由 elec 于 2014-7-7 23:02 编辑

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

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

      是不是很难??
发表于 2014-6-7 14:43:12 | 显示全部楼层
  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"
复制代码
不,很简单
发表于 2014-6-7 14:53:02 | 显示全部楼层
点击链接加入群【批处理之家①】:http://jq.qq.com/?_wv=1027&k=ML4fnU
 楼主| 发表于 2014-6-7 18:51:56 | 显示全部楼层
回复 2# 522235677


    非常感谢哈,不过感觉对于大文本有点吃不消~~
    有没有高效率的方法呢?
发表于 2014-6-7 18:59:42 | 显示全部楼层
回复 4# elec


    批处理就这样,没什么效率高的。第三方工具或许可以,sed 啥的,但我也不懂
 楼主| 发表于 2014-6-7 19:15:51 | 显示全部楼层
回复 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"
复制代码
发表于 2014-7-8 00:55:00 | 显示全部楼层
这样可以不
  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();
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 08:48 , Processed in 0.018807 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表