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

[文本处理] [已解决]批处理怎样实现文本文件合并,处理后分割?

文件夹中有若干个文本文件,如何实现合并为一个文件,用“查找”“替换”处理后,再按原来的文件内容分割。
合并时将原来的文件名插入到各文件内容的第一行并在行首加特殊符号(如@)作为标记。
将“@+原文件名”作为分割后的文件名,并删除此行。
求助满足以上操作的两个批处理。
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

直接第三方批量查找替换

TOP

先合并的目的是什么?直接单独处理每个文件不行吗?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 3# Batcher

文本文件较多,每个文件夹中的文本格式近似,需多次替换。不同文件夹文件替换替换方式又不尽相同,想合并后用EmEditor统一处理后,再分割。

TOP

回复 4# qixiaobin0715


    这样的话,是需要把每个文件夹下的多个文件合并成一个文件,而不是把所有文件夹下的所有文件合并成一个文件是吧?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

yes,谢谢!

TOP

合并.bat
  1. @echo off
  2. for /f "delims=" %%i in ('dir /b /ad') do (
  3.     (for /f "delims=" %%j in ('dir /b /a-d "%%i\*.txt"') do (
  4.         echo @%%j
  5.         type "%%i\%%j"
  6.         echo,
  7.     ))>"%%i\合并.log"
  8. )
复制代码
1

评分人数

    • smss: 我所见过最助人为乐的版主技术 + 1
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或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&&setlocal enabledelayedexpansion
  2. del /q 完毕.ini
  3. for /f %%g in ('dir /b/on *.txt') do (
  4. for /f "delims=" %%i in ("%%g") do (
  5.     set "too=%%i"
  6.     set too=!too:依次=类推!
  7. ……
  8.     echo !too!>>test.ini
  9. )
  10.     move /y test.ini "%%g"
  11. )
  12. echo.>完毕.ini
  13. exit
复制代码
有n个文件,即使合并到一起,你所有的替换也是要一一进行的。同时白白增加了最后切割分离的难度。

以上是常见的文本内容替换,处理一批文件是可以的。
但对于大量,超大量的文件要处理,一次处理时间太长,不能中断,使用就不灵活了。
因此推荐我的另一个bat,分批处理调度bat,可以将大任务化解为小任务。方便实用。
http://www.bathome.net/viewthread.php?tid=47492&highlight=
目的,学习批处理

TOP

多文件替换字符串,合并再分割多此一举,而且EmEditor是支持对指定文件夹里的多文件进行字符串替换的
提供bat代写,为你省时省力省事,支付宝扫码头像支付
微信: unique2random

TOP

本帖最后由 qixiaobin0715 于 2018-9-21 09:24 编辑

谢谢诸位关注!
1.EmEditor是可以在文件夹中多文件查找替换,但是不能跨行,比如替换空行就不行,\n+替换为\n没反应。
2.我也不想合并分割这么麻烦的折腾,但是查找替换需要用到较为复杂的正则表达式,批处理不好操作。如诸如这样的正则表达式:
^(\\[.*?](?![A-D][^一-龥\\n]+\\P{Punct})\\n(.*[一-龥].*\\P{Punct})$、
^((\\Q[00:00.00]¥\\E\\D.*\\n.*¥\\D.*\\n)?\\[.*?]¥(\\d+) *(.*)\\n\\[.*?]¥\\3? *(.*\\n))等

TOP

回复 7# Batcher
到单位处理了一个文件夹中的超过100个文件,速度很快,效果极佳。太感谢了!

TOP

回复 10# qixiaobin0715


    替换空行不是\n\s*\n替换为\n吗?

TOP

本帖最后由 qixiaobin0715 于 2018-9-21 10:54 编辑

回复 12# flashercs
\s是任一空白字符,包括空格、制表符、换页符、回车符和垂直制表符。= [ \f\n\r\t\v]
我说的空行只包括换行符,含有空格,制表符等都不能叫空行。
\n+的意思是连续多个空行。效率更高一点可写为\n{2,}

TOP

回复 12# flashercs
替换空白行(包括空行)效率更高一点可以这样写^\s*\n,替换为空字符。
替换纯空行^\n替换为空字符。

TOP

虽然只是解决了合并问题,文本处理效率还是得到了提高。

TOP

返回列表