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

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

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

回复 17# qixiaobin0715
谢谢!又学到东西了。

TOP

回复 16# Batcher
原来是变量名和关键字冲突了,搞半天,感谢,感谢

TOP

本帖最后由 qixiaobin0715 于 2022-4-20 13:06 编辑

也可以像在顶楼所说,不用先合并后处理合并后的文本,而是直接合并:
  1. @echo off
  2. cd /d "D:\合并\输出"
  3. (for /f "tokens=1,2* delims=:," %%a in ('find /v "" *.txt^|findstr /vr "\.TXT$ ^$"^|findstr /n .*') do echo,%%a,%%c)>合并.txt
  4. pause
复制代码

TOP

回复 15# karmane
%path%属于系统变量,尽量不要用系统变量名设置自定义变量。
你可以运行echo,%path%试试即知。
你这种情况用cd跳转到要处理的目录即可:
  1. cd /d "D:\合并\输出"
  2. (for /f "tokens=1,2* delims=,:" %%i in ('findstr /n .* 合并后的文本.txt') do echo,%%i,%%k)>行号重排.txt
  3. del 合并后的文本.txt
复制代码

TOP

回复 15# karmane


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

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

回复 13# 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

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

TOP

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

TOP

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

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

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

TOP

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

TOP

返回列表