Advertisement
T3RRYT3RR0R

Batch Array and List macro's

Oct 3rd, 2020
602
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Batch 3.41 KB | None | 0 0
  1. @Echo off & CD "%~dp0"
  2. ::: Define Array macro usage: %$Def:$A=Group Name%element values as list
  3.  Set "$Def=For %%n in (1 2)Do if %%n==2 ((If "!#$A!"=="" (Set "#$A=0"))&(For %%G in (!elements!)Do (Set "$A[!#$A!]=%%~G"&Set /A "#$A+=1")))Else Set elements="
  4. ::: $Find macro usage: %$Find:$A=Group Name%EXACTValueToFind
  5.  Set "$Find=Set "Fnd=0"&For %%n in (1 2)Do if %%n==2 (For %%G in ("!string!")Do (For /F "Tokens=1,2 Delims==" %%1 in ('Set $A[')Do (If /I "%%~G"=="%%2" (Set "Fnd=1"&Echo/%%2 in Var %%1)))&(If not "!Fnd!"=="1" (Echo/!String! not found in $A&Set "Fnd=0")))Else Set string="
  6. ::: /D array display macro usage: %/D:$A=Group Name%
  7.  Set "/D=For /L %%G in (0 1 !#$A!)Do If not "!$A[%%G]!"=="" Echo/$A[%%G]=!$A[%%G]!"
  8. ::: /C clear array variables macro usage: %/D:$A=Group Name%
  9.  Set "/C=(For /F "Tokens=1,2 Delims==" %%G in ('Set $A[')Do (Set "%%G=")& Set "#$A=") > Nul 2> Nul"
  10. ::: Sort /Order macro usage: %Sort/L:$A=Group Name% or %Sort/H:$A=Group Name%
  11.  Set "Sort/L=(((For /F "Tokens=1,2 Delims==" %%G in ('Set $A[')Do Echo/%%H)>"%TEMP%\__Sort.txt")&(Set "#$A=0"&For /F "UseBackQ Delims=" %%G in (`Type "%TEMP%\__Sort.txt" ^| Sort`)Do (For %%x in ("$A[!#$A!]") Do (Setlocal DisableDelayedExpansion&&Endlocal&Set "%%~x=%%~G")&Set /A "#$A+=1"))&Set /A "#$A-=1")"
  12.  Set "Sort/H=(((For /F "Tokens=1,2 Delims==" %%G in ('Set $A[')Do Echo/%%H)>"%TEMP%\__Sort.txt")&(Set "#$A=0"&For /F "UseBackQ Delims=" %%G in (`Type "%TEMP%\__Sort.txt" ^| Sort /R`)Do (For %%x in ("$A[!#$A!]") Do (Setlocal DisableDelayedExpansion&&Endlocal&Set "%%~x=%%~G")&Set /A "#$A+=1"))&Set /A "#$A-=1")"
  13.  Setlocal && For /F "tokens=2 delims=#" %%a in ('"prompt #$H#$E# & echo on & for %%b in (1) do rem"') do (Endlocal&Set "/AE=%%a")
  14.  Set "List/E=Set "#n=0"&For %%n in (1 2)Do if %%n==2 (For %%G in (!ListV!)Do If "!#n!"=="i#" (Echo/%%~G& Set /A "#n+=1")Else (Set /A "#n+=1"))Else Set ListV="
  15.  Set "List/D=Set "#$L=0"&For %%n in (1 2)Do if %%n==2 (For %%G in (!$L!)Do (Echo/%%~G&Set /A "#$L+=1"))Else Set $L="
  16. rem // usage examples
  17.  Set "TAB=  "
  18.  Set "CIOut=(For /L %%. in (0,1,!#CI!) Do for /F "Tokens=1,2 Delims==" %%G in ('Set CI[%%.]')Do Echo/!%%H!%%G=%%H!Off!)"
  19.  If Defined #CI Set #CI=
  20.  Setlocal EnableExtensions EnableDelayedExpansion & Mode 1000
  21. Echo/Define Lists:&Echo/%%List/D:$L-ListVarname%%"List" "quoted" "values"&Echo/
  22.  %List/D:$L=str%"Red=31" "Yellow=33" "Green=32" "Blue=34" "Purple=35" "Cyan=36" "White=37" "Gray=90" "Pink=91" "Beige=93" "Aqua=94" "Magenta=95" "Teal=96" "Off=0" "Black=30"
  23.  Echo/&Echo/Extract value from list by index #:&Echo/%%List/E:i#=indexValue%%^^!ListVarname^^!&Echo/
  24.  For /L %%. in (0,2,!#str!) Do (Set "el#=%%."&%List/E:i#=!el#!%!str!)
  25.  Pause
  26. Echo/&Echo/Clear, Define, sort or search Array values&Echo/
  27.  %/C:$A=El%
  28.  Set /A Red=31,Yellow=33,Green=32,Blue=34,Purple=35,Cyan=36,White=37,Gray=90,Pink=91,Beige=93,Aqua=94,Magenta=95,Teal=96,Off=0,Black=30
  29.  For %%A in (Red,Yellow,Green,Blue,Off,Pink,Beige,Gray,Purple,Cyan,White,Aqua,Magenta,Teal,Black) do ((%$Def:$A=CI%%%A)&Set "%%A=%/AE%[!%%A!m")
  30.  Set /A #CI-=1 > Nul
  31.  %CIOut% & %$Find:$A=CI%Black
  32.  %Sort/L:$A=CI% & %CIOut% & %$Find:$A=CI%Black
  33.  %Sort/H:$A=CI% & %CIOut% & %$Find:$A=CI%Black
  34.  Pause
  35.  %$Def:$A=El%1 1 2 3 5 8 13 21
  36.  %/D:$A=El%
  37.  %$Find:$A=El%8
  38.  %/C:$A=El%
  39.  %$Def:$A=El%02 05 11 41 31 17 47 07 37 19 29 23 13 43 03
  40.  %/D:$A=El%
  41.  %$Find:$A=El%8
  42.  %$Find:$A=El%41
  43.  %Sort/L:$A=El%
  44.  %/D:$A=El%
  45.  %$Find:$A=El%41
  46.  %Sort/H:$A=El%
  47.  %/D:$A=El%
  48.  %$Find:$A=El%41
  49. Endlocal
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement