[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
本帖最后由 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
        ...
  1. @echo off
  2. call :main "原文件.txt" > "结果文件.txt"
  3. goto :eof
  4. :main <input_file>
  5. SetLocal
  6. REM 清空以“_”开头的变量名
  7. for /f "delims==" %%a in (' set _ ') do (
  8. set %%a=
  9. )
  10. REM 读取文件
  11. for /f "usebackq tokens=*" %%a in (%1) do (
  12. call :sort "%%a"
  13. )
  14. EndLocal
  15. goto :eof
  16. :sort <string>
  17. SetLocal EnableDelayedExpansion
  18. set newStr=
  19. for %%a in (%~1) do (
  20. set _%%a==
  21. )
  22. for /f "delims=_=" %%a in (' set _ ') do (
  23. set newStr=!newStr! %%a
  24. )
  25. echo !newStr:~1!
  26. EndLocal
  27. goto :eof
复制代码
这样的需求用其他语言会非常的简单,比如 AutoHotkey:
  1. Loop, Read, 原文件.txt, 结果文件.txt
  2. {
  3. data := A_LoopReadLine
  4. Sort, data, N D%A_Space%
  5. FileAppend, % data "`r`n"
  6. }
复制代码

TOP

返回列表