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

[文本处理] 批处理怎样提取文件夹下的五个文本作为一个新的文件?

叙述如下:同一个文件夹下有五个TXT文本文件,自动提取五个文件中的第一段组合成一个新的TXT文件,有空行作标识;
比如同一个文件下有ABCDE五个文件,每个文件分别有十段文字分别为A1……A10,B1……B10,……,E1……E10,每段文字有空行隔开,利用命令提取A1,B1,C1,D1,E1作为一个新的TXT文件,依此类推
一、每提取文件中的第一段之后即进行删除,以便循环语句进行第二次提取
二、能够循环提取,直至所有TXT文本为空为止
三、提取之后在当前文件内保存为新的TXT文件名
劳烦版主大人和诸位朋友了!
请求高手帮忙,不胜感激,小弟QQ:253357598,具体需要多少费用或者您有什么要求可以跟贴或者加我QQ详谈

[ 本帖最后由 zppp85 于 2011-3-15 15:18 编辑 ]

合并当前目录下所有txt的第一段(以空行区分段落,仅含全角或半角空格的行也做空行处理)
  1. @echo off
  2. (for /f "delims=" %%i in ('findstr /n .* *.txt') do (
  3.     set "str=%%i"
  4.     for /f "tokens=1,2* delims=:" %%a in ("%%i") do (
  5.        if not defined .%%a (
  6.            if defined k echo;&set "k="
  7.            set kh=&set .%%a=a&set k=a
  8.         )
  9.        if "%%a:%%b:"=="%%i" set kh=a
  10.      )
  11.      if not defined kh (
  12.          setlocal enabledelayedexpansion
  13.          set str=!str:*:=!
  14.          set str=!str:*:=!
  15.          set str=!str: = !
  16.          set str=!str: =!
  17.          if defined str echo;!str!
  18.          endlocal
  19.       )
  20.      
  21. ))>tem.txt
  22. start "" "tem.txt"
复制代码

[ 本帖最后由 随风 于 2011-3-15 08:18 编辑 ]
技术问题请到论坛发帖求助!

TOP

感谢随风版主无私分享!
小弟前面有几个关键点没有描述清楚,还请随风版主能再帮我看看!
一、每提取文件中的第一段之后即进行删除,以便循环语句进行第二次提取
二、能够循环提取,直至所有TXT文本为空为止
三、提取之后在当前文件内保存为新的TXT文件名
劳烦版主大人和诸位朋友了!

TOP

把下面的代码保存为.bat文件放到要处理的目录下运行就可以了,不过这些段落中如果有感叹号,将被忽略。
  1. @echo off&setlocal enabledelayedexpansion
  2. md new 2>nul
  3. (for /f "delims=" %%a in ('dir /b *.txt') do (
  4.   set flag=
  5.   for /f "tokens=1* delims=:" %%b in ('findstr /n .* "%%a"') do (
  6.     set "str=%%c"
  7.     if not defined str set flag=1
  8.     if not defined flag echo,!str!
  9.   )
  10.   echo,
  11. ))>new\new.txt
  12. start new\new.txt
复制代码

[ 本帖最后由 weichenxiehou 于 2011-3-15 11:37 编辑 ]
看得多说得多,远比不上写得多。

TOP

回复 3楼 的帖子

请把所有的描述全部更新的顶楼
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

改进了一下,下面的代码应该能兼容所有特殊字符,只是效率方面有待提高。
  1. @echo off
  2. md new 2>nul
  3. (for /f "delims=" %%a in ('dir /b *.txt') do (
  4.   call :lp "%%a"
  5.   endlocal
  6. ))>new\new.txt
  7. start new\new.txt&goto :eof
  8. :lp
  9. set flag=
  10. for /f "tokens=1* delims=:" %%b in ('findstr /n .* %1') do (
  11.   set "str=%%c"&setlocal enabledelayedexpansion
  12.   if not defined str echo,&goto :eof
  13.   echo,!str!
  14. )
复制代码

[ 本帖最后由 weichenxiehou 于 2011-3-15 11:51 编辑 ]
看得多说得多,远比不上写得多。

TOP

(for /f "tokens=2* delims=:"%%a in ('findstr /n .* *.txt^|findstr "^1:"') do echo %%b)>合并.txt

TOP

finstr /n + sort 应该可以达到楼主的新要求
有兴趣的可以实践一下
天的白色影子

TOP

期待诸位朋友的帮助!!

TOP

期待诸位朋友的帮助!!

TOP

回复 10楼 的帖子

6楼不是有代码么?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

原帖由 Batcher 于 2011-3-17 17:06 发表
6楼不是有代码么?

呵呵,我看不懂,晕了

TOP

12# zppp85


先不说能否看懂。关键是,能不能解决你的问题呢?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

!!!

本帖最后由 zppp85 于 2011-3-21 14:27 编辑
12# zppp85


先不说能否看懂。关键是,能不能解决你的问题呢?
Batcher 发表于 2011-3-21 12:57

管理员同志,没有解决问题,程序只能获取五个TXT文件中的第一段,作为一个新的文件
但达不到自动删除第一段,然后循环提取第一段,创建新文件,请求大家帮忙

TOP

向坛里的朋友求助!!

TOP

返回列表