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

[文本处理] 批处理如何将txt文本的内容倒序/反转?

本帖最后由 pcl_test 于 2016-9-3 20:00 编辑

一个文本文件,如何将最后一行变成第一行,依次类推,比如一个文件有100行,100行变第一行,99行变第二行.......第一行变第100行,第二行变99行,即倒过来按顺序排一下.

来个JS
  1. f = "C:\\test\\1.txt"; //文件路径请用\\
  2. overWrite = 0; //是否替换原文件
  3. fso = new ActiveXObject("Scripting.FileSystemObject");
  4. if(!overWrite) f2=f+'.new.txt'; else f2=f;
  5. s=fso.OpenTextFile(f).ReadAll();
  6. s=s.split('\r\n').reverse().join('\r\n');
  7. fso.OpenTextFile(f2,2,true).Write(s);
复制代码
1

评分人数

TOP

回复 12楼 的帖子

Q: 如何用code把代码括起来?
A: http://bbs.bathome.net/thread-404-1-1.html

参考:批处理之家论坛使用常见问题FAQ
http://bbs.bathome.net/thread-3473-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

回复11楼batcher,谢谢提醒
确实无法实现感叹号的问题,关于变量延迟还得仔细潜一下啊,下面写了个不用延迟的,就是效率太差了,
现在好像对bat越学越笨拙了......................
  1. @echo off
  2. set "t=-1"
  3. for /f  "tokens=1* delims=:" %%a in ('findstr /n ".*" 1.txt') do (
  4.   set/a t+=1
  5.   if not defined m (set m=%%b)
  6. )
  7. :ss
  8. if %t%==0 (echo %m%&pause)
  9. for /f "skip=%t% tokens=1* delims=:"  %%i in ('findstr /n ".*" 1.txt') do (
  10. echo %%j
  11. set/a t-=1
  12. goto ss
  13. )
复制代码

[ 本帖最后由 edmond 于 2010-10-2 22:53 编辑 ]

TOP

回复 4楼 的帖子

你内容找个包含感叹号的文件试试?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

批处理行倒序输出文件内容
http://bbs.bathome.net/thread-4127-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

回复 3楼 的帖子

第三方命令行工具 gawk.exe 下载地址:
http://bbs.bathome.net/thread-3981-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

变量排序的方法是从左到右从小到大(前面三位),后面的可以作为一个数值排
你输入100后的排序是百位排好后再排十位然后个位这样的
自然就乱了

我记得是这样的
如果高手在的话,最好能够请高手详细说明,以免产生误导

[ 本帖最后由 edmond 于 2010-10-2 01:04 编辑 ]

TOP

我只有100行,改成100后,次序就乱了,改回正常了.

TOP

批处理运算能处理的最大数值
如果你的行数超过了2147483648 以上代码就不行了
改小是可以的


意思是你文本里需要处理最多的行数

TOP

原帖由 edmond 于 2010-10-1 23:15 发表
@echo off
setlocal enabledelayedexpansion
set t=2147483648
for /f  %%a in (1.txt) do (
set _!t!%%a=%%a
set/a t-=1
)
for /f "tokens=2 delims=="  %%i in ('set _') do (
echo %%i>>tem.txt
)
pa ...




实现了,谢谢,不过2147483648是什么意思,改成其它的好像就不对了.

TOP

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set t=2147483648
  4. for /f  %%a in (1.txt) do (
  5. set _!t!%%a=%%a
  6. set/a t-=1
  7. )
  8. for /f "tokens=2 delims=="  %%i in ('set _') do (
  9. echo %%i>>tem.txt
  10. )
  11. pause
复制代码

TOP

谢谢,不过没有搜到GAWK,能不能不用第三方软件,用for之类的能不能实现?

TOP

  1. gawk "{a[NR]=$0} END{for(j=NR;j>=0;j--)print a[j]}" urfile.txt
复制代码


gawk为第三方软件,本论坛有下载。

[ 本帖最后由 asnahu 于 2010-10-1 23:17 编辑 ]

TOP

返回列表