标题: [数值计算] 【已解决】批处理如何实现数组排列? [打印本页]
作者: 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
...- @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"
- }
复制代码
作者: 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其实很吃力- @echo off
- for /f "delims=" %%a in (a.txt) do (
- setlocal enabledelayedexpansion
- 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 (
- if !$%%i! gtr !$%%j! set/a $%%j=$%%i,$%%i=!$%%j!
- )
- )
- for /l %%i in (1,1,!n!) do set "var=!var! !$%%i:~1!"
- echo!var!
- endlocal
- )
- 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://bathome.net./) |
Powered by Discuz! 7.2 |