Board logo

标题: [数值计算] 【已解决】批处理如何实现数组排列? [打印本页]

作者: ads350668398    时间: 2014-12-6 20:32     标题: 【已解决】批处理如何实现数组排列?

本帖最后由 ads350668398 于 2014-12-7 19:06 编辑

01 02 09 10 21 31
26 04 05 32 31 23*
01 03 12 20 21 29
09 16 17 18 22 27
05 10 16 19 23 28
13 20 01 30 17 15*
09 18 19 25 28 31
32 01 09 14 28 169
05 07 12 14 15 20
02 09 16 21 30 31
25 32 13 33 01 11*
以上是某几期的双色球结果
我大算整理下【*号位本人发现不符合顺序】
能使之所有行 符合 由小到大的顺序 谢谢 本人比较笨
作者: tmplinshi    时间: 2014-12-7 03:58

本帖最后由 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. }
复制代码

作者: yiwuyun    时间: 2014-12-7 09:22

先把行列式排成一排,用某个变量取出来假如为a.%n%
for /l %%a in (1,1,6) do (
   for /l %%b (1,1,11) do (
      set /a n+=1
      for /l %%c in (!n!,1,!n!) do (
         set row%%a.low%%b=!a.%%c!
      )
   )
)
作者: ads350668398    时间: 2014-12-7 13:19

本帖最后由 ads350668398 于 2014-12-7 14:35 编辑

for /f "tokens=1-26 delims= " %%1 in (1.txt) do (
if 0 lss %%2
if %%2 lss %%3   
>>111.txt echo %%2 %%3 %%4 %%5 %%6 %%7

)
if怎么表示不出来还错误 晕
作者: terse    时间: 2014-12-7 18:22

排序用P其实很吃力
  1. @echo off
  2. for /f "delims=" %%a in (a.txt) do (
  3.     setlocal enabledelayedexpansion
  4.     for %%i in (%%a) do set /a n+=1&set $!n!=1%%i
  5.          set /a c=n-1
  6.          for /L %%i in (1,1,!c!) do (
  7.          set /a b=%%i+1
  8.          for /L %%j in (!b!,1,!n!) do (
  9.          if !$%%i! gtr !$%%j! set/a $%%j=$%%i,$%%i=!$%%j!
  10.         )
  11.     )
  12.     for /l %%i in (1,1,!n!) do set "var=!var! !$%%i:~1!"
  13.     echo!var!
  14.     endlocal
  15. )
  16. pause
复制代码

作者: ads350668398    时间: 2014-12-7 19:05

谢谢5楼了 真看不懂 晕我 还炸想着怎么,用IF 解决呢
问下
if !$%%i! gtr !$%%j! set/a $%%j=$%%i,$%%i=!$%%j!
怎么理解啊 $ 这个符号是师门意思啊
作者: ads350668398    时间: 2014-12-7 19:08

for %%i in (%%a) do set /a n+=1&set $!n!=1%%i
         set /a c=n-1
         for /L %%i in (1,1,!c!) do (
         set /a b=%%i+1
         for /L %%j in (!b!,1,!n!) do (
我晕 我全看不懂#124




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