[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]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 编辑 ]

本帖最后由 tmplinshi 于 2011-3-24 02:07 编辑
  1. @echo off
  2. set "OutDir=#1#"
  3. md "%OutDir%" 2>nul
  4. for /f "delims=" %%f in (' dir /b *.txt ') do (
  5.     if %%~zf neq 0 (
  6.         findstr /n "^$" "%%f" >.tmp
  7.         set n=0
  8.         set /p n=<.tmp
  9.         set /a n = n, n_ = n
  10.         call :o "%%f" >"%OutDir%\%%~nf_%%~xf" 2>nul
  11.     )
  12. )
  13. exit /b
  14. :o
  15. for /f "eol= usebackq delims=" %%s in ("%~1") do (
  16.     echo,%%s
  17.     set /a "n -= 1, 1 / (n - 1)" || (
  18.         more +%n_% %1 >.tmp
  19.         move .tmp %1
  20.         goto :eof
  21.     )
  22. )
  23. move .tmp %1
复制代码

TOP

向坛里的朋友求助!!

TOP

!!!

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


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

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

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

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

呵呵,我看不懂,晕了

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

期待诸位朋友的帮助!!

TOP

期待诸位朋友的帮助!!

TOP

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

TOP

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

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

回复 3楼 的帖子

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

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

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

TOP

返回列表