[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
改自二楼代码,增加值相同时对变量名的排序。
  1. @echo off & setlocal ENABLEDELAYEDEXPANSION
  2. set mask=##########
  3. set num0=1&set num1=5&set num4=0&set num6=0&set num8=0&set num10=1&set num12=5&set num13=1
  4. set maxValue=%num0% &set minValue=%num0%
  5. rem sort value first
  6. for /f "tokens=1,2 delims=num=" %%a in ('set num ^| findstr "num[0-9]"') do (
  7.     set foo=!mask!%%a
  8.     set bar=!mask!%%b
  9.     set order_!bar:~-10!_!foo:~-10!=1
  10. )
  11. rem %%a = value, %%b = itemNO.
  12. for /f "tokens=1,2 delims=order=_" %%a in ('set order') do (
  13.     if defined min (set max=%%b) else (set min=%%b)
  14. )
  15. echo the minimal item: num%min:#=%, value = !num%min:#=%!
  16. echo the maximum item: num%max:#=%, value = !num%max:#=%!
复制代码
  1. the minimal item: num4, value = 0
  2. the maximum item: num12, value = 5
复制代码

TOP

非批,语法糖
  1. my %hash = (0=>1, 1=>5, 4=>0, 6=>0, 8=>0, 10=>1, 12=>5, 13=>1);
  2. my @idx = sort { $hash{$a} <=> $hash{$b} || $a <=> $b } ( keys %hash );
  3. grep { printf "hash[%2d] = %d\n", $_, $hash{$_} } @idx;
复制代码
  1. hash[ 4] = 0
  2. hash[ 6] = 0
  3. hash[ 8] = 0
  4. hash[ 0] = 1
  5. hash[10] = 1
  6. hash[13] = 1
  7. hash[ 1] = 5
  8. hash[12] = 5
复制代码

TOP

返回列表