本帖最后由 tmplinshi 于 2014-12-7 04:25 编辑
思路——
以“26 04 05 32 31 23”这行为例。
首先将每个数字设置为变量:
set _26=a
set _04=a
set _05=a
...
然后执行 set _ 就能得到排列后的结果:
_04=a
_05=a
_26=a
...- @echo off
- call :main "原文件.txt" > "结果文件.txt"
- goto :eof
-
- :main <input_file>
- SetLocal
-
- REM 清空以“_”开头的变量名
- for /f "delims==" %%a in (' set _ ') do (
- set %%a=
- )
-
- REM 读取文件
- for /f "usebackq tokens=*" %%a in (%1) do (
- call :sort "%%a"
- )
-
- EndLocal
- goto :eof
-
- :sort <string>
- SetLocal EnableDelayedExpansion
-
- set newStr=
- for %%a in (%~1) do (
- set _%%a==
- )
- for /f "delims=_=" %%a in (' set _ ') do (
- set newStr=!newStr! %%a
- )
- echo !newStr:~1!
-
- EndLocal
- goto :eof
复制代码 这样的需求用其他语言会非常的简单,比如 AutoHotkey:- Loop, Read, 原文件.txt, 结果文件.txt
- {
- data := A_LoopReadLine
- Sort, data, N D%A_Space%
- FileAppend, % data "`r`n"
- }
复制代码
|