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

[文本处理] 批处理怎样把txt合并后,行号重新排序?

现在通过copy命令实现了txt文件的合并,但是行号怎么实现从1开始的顺序排序呢???

回复 1# karmane


请举例说明一下你的需求,比如合并之前什么样,合并之后又是什么样?

如需上传截图,请用图床:
http://bbs.bathome.net/thread-60985-1-1.html

如需上传附件,请用阿里云盘或百度网盘。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 2# Batcher
文本的格式是一样的(逗号分割文件),有时候需要把多个文件合并成一个,但是序号要从1开始的顺序递增。
如下图:

TOP

TOP

奇怪了,怎么看不到截图呢?

TOP

回复 3# karmane


请参考Q-04和Q-05把bat文件和txt文件都保存为ANSI编码:
https://mp.weixin.qq.com/s/6lbb97qUOs1sTyKJfN0ZEQ
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. cd /d "%~dp0"
  4. set "n=0"
  5. (for /f "delims=" %%a in ('dir /b /a-d *.txt') do (
  6.     for /f "tokens=1* delims=," %%b in ('type "%%a"') do (
  7.         set /a n+=1
  8.         echo !n!,%%c
  9.     )
  10. ))>"合并.tmp"
  11. ren "合并.tmp" "合并.txt"
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

合并后
sort 合并.txt >1.txt

TOP

  1. @echo off
  2. (for /f "tokens=1,2* delims=,:" %%i in ('findstr /n .* 合并后的文本.txt') do echo,%%i,%%k)>行号重排.txt
  3. del 合并后的文本.txt
复制代码

TOP

回复 7# qinxg


    你可能没有看清楚需求吧,他那些第一列的数字是文本的一部分,所以是需要修改的
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 6# Batcher
亲测可以,谢谢!如果早知道有这个论坛,那该多好啊。。。

TOP

回复 7# qinxg
虽然没有实现排序的需求,但也让我学习了“sort”命令,感谢!

TOP

回复 8# qixiaobin0715
简单的一行命令就能实现,牛,我还得好好消化一下呢,,感谢!

TOP

实际上标准姿势或者规范写法应当是:
  1. @echo off
  2. (
  3.     for /f "tokens=1,2* delims=,:" %%i in ('findstr /n .* 合并后的文本.txt') do (
  4.         echo,%%i,%%k
  5.     )
  6. )>行号重排.txt
  7. del 合并后的文本.txt
复制代码
这样好理解一些。

TOP

回复 13# qixiaobin0715
学习学习

TOP

回复 8# qixiaobin0715

再请教一下
定义了一个路径的变量,想实现输出路径的灵活配置,结果报错了,求解。。。
@echo off
set Path="D:\合并\输出"
(for /f "tokens=1,2* delims=,:" %%i in ('findstr /n .* %Path%\合并后的文本.txt') do echo,%%i,%%k)>%Path%\行号重排.txt
del %Path%\合并后的文本.txt

TOP

返回列表