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

[文本处理] [已解决]批处理如何将文本内容行倒排序?

[复制链接]
发表于 2011-4-27 13:00:52 | 显示全部楼层
另外一种,以前经常用的:
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%a in (a.txt) do (
  3.      set /a n+=100001
  4.      echo !n:~-6!:%%a
  5. )>tmp
  6. (for /l "tokens=1* delims=:" %%a in ('sort /r tmp') do echo %%b)>2.txt
  7. del tmp
  8. start a.txt
复制代码
但是碰到大文件时,for两遍的效率会很低
发表于 2011-4-27 13:40:08 | 显示全部楼层
  1. sort /r 111.txt >hello.txt
  2. start "" "hello.txt"
复制代码
发表于 2011-4-27 14:09:21 | 显示全部楼层
17# Hello123World


Windows的sort命令不会按照我们的想法去排序的
发表于 2011-5-1 15:12:23 | 显示全部楼层
顶顶顶顶顶顶顶
发表于 2011-9-7 10:31:23 | 显示全部楼层
哈哈 虽然这个已经解决了但是看到了 还是要给个好方法的。

  1. REM :: 打开变量延迟
  2. @Echo Off&SetLocal EnableDelayedExpansion

  3. REM :: 设定一个增值变量值为0
  4. Set Varn=0

  5. REM :: 首次循环判断文本中一共有多少行,并将每一行赋值于一个变量。
  6. For /f %%a in (1.txt) do (
  7.         Set Vara=%%a
  8.         Set /a Varn+=1
  9.         Set "Var!Varn!=!Vara!"
  10. )

  11. REM :: 反过来将变量输出
  12. For /l %%b in (%Varn%,-1,1) do (
  13.         Echo !Var%%b!
  14. )
  15. Pause
复制代码
不管文本中有多少行,如果行的内容比较复杂的话就要在第一个循环的For命令加上tokens=*参数
发表于 2011-10-4 23:26:49 | 显示全部楼层
  1. gawk "{a[NR]=$0}END{for(i=NR;i>=1;i--)print a[i]}" a.txt
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-18 06:00 , Processed in 0.018535 second(s), 7 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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