Board logo

标题: [文本处理] BAT如何把txt内容按字符长短排列? [打印本页]

作者: qq1050026447    时间: 2013-2-17 19:06     标题: BAT如何把txt内容按字符长短排列?

a.txt  内容  
会地地村士大夫肝要热管
大师傅脸
村枯枯
夺有十二分十二分


求一BAT 如何把a.txt内容按字符长短排列成
村枯枯
大师傅脸
夺有十二分十二分
会地地村士大夫肝要热管
作者: group    时间: 2013-2-18 00:48

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. (for /l %%a in (1 1 100) do (
  4.    set "a=!a!."
  5.    findstr /x "!a!" a.txt
  6. ))>b.txt
  7. pause
复制代码
这个很慢,效率高的要比较复杂
作者: poter    时间: 2013-2-19 21:00

排序用BAT实现比较麻烦,给一个讨巧的办法,不过仅限于楼主所提供的a.txt
  1. @ECHO OFF
  2. Setlocal enableDelayedExpansion
  3. for /f "tokens=*" %%i in (a.txt) do (
  4. set str=%%i123456789
  5. set str=!str:~11,1!
  6. set a!str!=%%i
  7. )
  8. for /l %%j in (10,-1,1) do (
  9. set str1=%%j
  10. call set str2=%%a!str1!%%
  11. if not "!str2!"=="" echo !str2!>>b.txt
  12. )
复制代码

作者: poter    时间: 2013-2-19 21:17

这是VBS做的排序
  1. option explicit
  2. dim fso, class1, class2, class3, str, count
  3. set fso = createobject("scripting.filesystemobject")
  4. set class1 = fso.opentextfile("a.txt")
  5. set class2 = createobject("scripting.dictionary")
  6. set class3 = fso.createtextfile("b.txt")
  7. do until class1.atendofstream
  8. str = class1.readline
  9. class2(len(str)) = str
  10. loop
  11. do while count < class2.count
  12. if not class2(count) = "" then class3.writeline class2(count)
  13. count = count + 1
  14. loop
复制代码

作者: group    时间: 2013-2-19 22:35

其实可以用第三方的话,linux里的sort就是按长度排序的,到下面这个链接里下载
http://www.bathome.net/thread-1114-1-1.html
放在同文件夹下运行这个
@sort a.txt>b.txt
作者: apang    时间: 2013-2-21 16:42

我也来个vbs
  1. Set FSO = CreateObject("Scripting.FileSystemObject")
  2. Set File = FSO.OpenTextFile("a.txt")
  3. Do Until File.AtEndOfStream
  4.    Line = File.ReadLine
  5.    Str = Str & Right("000"&Len(Line),4) & " " & Line & vbCrLf
  6. Loop
  7. FSO.CreateTextFile("$",True).Write Str
  8. Set s=CreateObject("Wscript.Shell")
  9. s.Run "cmd /c(for /f ""tokens=1*"" %a in ('sort $')do @echo,%b)>b.txt&del $",0
  10. MsgBox "OK"
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2