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

[文本处理] [已解决]求2个txt文件合并到1个txt文件,不改动里面的格式

本帖最后由 zhangpwr 于 2020-3-23 19:49 编辑

求助大佬,文件夹内有1000多个txt文件,现需要将2个txt合并成一个新的txt文件,名称无所谓,内容排版,还按之前文本内容排版换行即可。

另外如果想在合并时将文本内容少于500个汉字文本合并,多于500汉字的文本不合并,可以实现嘛?

回复 1# zhangpwr


    请问,合并的时候是随便找两个文件合并,还是对象有特定关系。
    请把这些讲清楚,能发两个例子上来更好了。

TOP

回复 2# wujunkai


    谢谢,随便2个文件合并就好

现有文件格式   百川右地.txt    砂不不为中是不.txt(名称都无序)
生成新的文件格式可以用数字排序

TOP

回复 3# zhangpwr
  1. @echo off
  2. @setlocal enabledelayedexpansion
  3. set num=0
  4. set name=0000
  5. :main
  6.     ( for /R %%i in (*.txt) do echo %%i)>files.tmp
  7.     call:fopen files.tmp file
  8.     set /A len=fopen_len-1
  9.     for /L %%i in (0,2,%len%) do (
  10.         set one=%%i
  11.         set /A two=!one!+1
  12.         if !two! LSS %len% call:marge !one! !two!
  13.     )
  14. pause
  15. goto:eof
  16. :fopen
  17.     rem %~1 为读取文件名,%~2为储存的变量名
  18.     rem 采用数组的方式储存,不储存换行符
  19.     rem 若无%~2,使用%~n1作为储存的变量名
  20.     set fopen_file=%~1
  21.     if "%~2"=="" (set fopen_vale=%~n1) else (set fopen_vale=%~2)
  22.     set fopen_len=0
  23.     for /F "tokens=1* delims=:" %%i in ('findstr /n .* %fopen_file%') do (
  24.         set %fopen_vale%[!fopen_len!]=%%j
  25.         set /A fopen_len+=1
  26.     )
  27. goto:eof
  28. :marge
  29.     set /A num+=1
  30.     call:int
  31.     type !file[%~1]! > %name%.txt
  32.     echo=>>%name%.txt
  33.     type !file[%~2]! >> %name%.txt
  34.     echo 已合并!file[%~1]! ^& !file[%~2]!
  35. goto:eof
  36. :int
  37.     rem 统一格式
  38.     set name=00000%num%
  39.     set name=%name:~-4%
  40. goto:eof
复制代码
判断500个字符略显复杂,有空我再想想。
1

评分人数

TOP

本帖最后由 zhangpwr 于 2020-3-23 18:51 编辑

如果不能按字符判断,那按行数判断呢?
比如只合并文档行数为多少以内的2个文本为一个

如果可以实现,麻烦告诉下哪里控制行数,我好调整

TOP

回复 6# zhangpwr


    我的程序会先生成一个 files.tmp 用来储存文件名。
    你可以用以下代码来处理大小限制。
  1. (for /F "tokens=*" %%i in ('type files.tmp') do if %%~zi LEQ 1000 echo %%i )>files.tmp
复制代码
1000是一个500中文字符的文件以ansi储存时的大小(1000B)。
    行数那个拿去问大佬吧,我只有一个大概思路 (findstr /N .*).
    然后图片中的问题应该是少了“”导致的,自己在两个type那里把路径加一下引号。
1

评分人数

TOP

返回列表