标题: [文本处理] BAT如何把txt内容按字符长短排列? [打印本页]
作者: qq1050026447 时间: 2013-2-17 19:06 标题: BAT如何把txt内容按字符长短排列?
a.txt 内容
会地地村士大夫肝要热管
大师傅脸
村枯枯
夺有十二分十二分
求一BAT 如何把a.txt内容按字符长短排列成
村枯枯
大师傅脸
夺有十二分十二分
会地地村士大夫肝要热管
作者: group 时间: 2013-2-18 00:48
- @echo off
- setlocal enabledelayedexpansion
- (for /l %%a in (1 1 100) do (
- set "a=!a!."
- findstr /x "!a!" a.txt
- ))>b.txt
- pause
复制代码
这个很慢,效率高的要比较复杂
作者: poter 时间: 2013-2-19 21:00
排序用BAT实现比较麻烦,给一个讨巧的办法,不过仅限于楼主所提供的a.txt- @ECHO OFF
- Setlocal enableDelayedExpansion
- for /f "tokens=*" %%i in (a.txt) do (
- set str=%%i123456789
- set str=!str:~11,1!
- set a!str!=%%i
- )
-
- for /l %%j in (10,-1,1) do (
- set str1=%%j
- call set str2=%%a!str1!%%
- if not "!str2!"=="" echo !str2!>>b.txt
- )
复制代码
作者: poter 时间: 2013-2-19 21:17
这是VBS做的排序- option explicit
- dim fso, class1, class2, class3, str, count
- set fso = createobject("scripting.filesystemobject")
- set class1 = fso.opentextfile("a.txt")
- set class2 = createobject("scripting.dictionary")
- set class3 = fso.createtextfile("b.txt")
- do until class1.atendofstream
- str = class1.readline
- class2(len(str)) = str
- loop
-
- do while count < class2.count
- if not class2(count) = "" then class3.writeline class2(count)
- count = count + 1
- 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- Set FSO = CreateObject("Scripting.FileSystemObject")
- Set File = FSO.OpenTextFile("a.txt")
- Do Until File.AtEndOfStream
- Line = File.ReadLine
- Str = Str & Right("000"&Len(Line),4) & " " & Line & vbCrLf
- Loop
- FSO.CreateTextFile("$",True).Write Str
- Set s=CreateObject("Wscript.Shell")
- s.Run "cmd /c(for /f ""tokens=1*"" %a in ('sort $')do @echo,%b)>b.txt&del $",0
- MsgBox "OK"
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |