找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 69490|回复: 19

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

[复制链接]
发表于 2022-3-21 22:57:36 | 显示全部楼层 |阅读模式
现在通过copy命令实现了txt文件的合并,但是行号怎么实现从1开始的顺序排序呢???
发表于 2022-3-22 11:55:22 | 显示全部楼层
回复 1# karmane


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

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

如需上传附件,请用阿里云盘或百度网盘。
 楼主| 发表于 2022-3-24 23:31:42 | 显示全部楼层
回复 2# Batcher
文本的格式是一样的(逗号分割文件),有时候需要把多个文件合并成一个,但是序号要从1开始的顺序递增。
如下图:
 楼主| 发表于 2022-3-24 23:32:25 | 显示全部楼层
 楼主| 发表于 2022-3-24 23:36:11 | 显示全部楼层
奇怪了,怎么看不到截图呢?
发表于 2022-3-25 08:42:28 | 显示全部楼层
回复 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"
复制代码
发表于 2022-3-25 08:42:48 | 显示全部楼层
合并后
sort 合并.txt >1.txt
发表于 2022-3-25 08:56:48 | 显示全部楼层
  1. @echo off
  2. (for /f "tokens=1,2* delims=,:" %%i in ('findstr /n .* 合并后的文本.txt') do echo,%%i,%%k)>行号重排.txt
  3. del 合并后的文本.txt
复制代码
发表于 2022-3-25 09:00:06 | 显示全部楼层
回复 7# qinxg


    你可能没有看清楚需求吧,他那些第一列的数字是文本的一部分,所以是需要修改的
 楼主| 发表于 2022-3-25 22:18:30 | 显示全部楼层
回复 6# Batcher
亲测可以,谢谢!如果早知道有这个论坛,那该多好啊。。。
 楼主| 发表于 2022-3-25 22:23:39 | 显示全部楼层
回复 7# qinxg
虽然没有实现排序的需求,但也让我学习了“sort”命令,感谢!
 楼主| 发表于 2022-3-25 22:26:23 | 显示全部楼层
回复 8# qixiaobin0715
简单的一行命令就能实现,牛,我还得好好消化一下呢,,感谢!
发表于 2022-3-26 08:34:45 | 显示全部楼层
实际上标准姿势或者规范写法应当是:
  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
复制代码
这样好理解一些。
 楼主| 发表于 2022-3-26 22:18:50 | 显示全部楼层
回复 13# qixiaobin0715
学习学习
 楼主| 发表于 2022-4-19 22:33:06 | 显示全部楼层
回复 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
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 04:34 , Processed in 0.021272 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表