www.ToolsSupplier.ru
Would you like to react to this message? Create an account in a few clicks or log in to continue.

Lots of useful batch functions

Go down

Lots of useful batch functions Empty Lots of useful batch functions

Post by Admin Sat Mar 11, 2017 8:13 pm

Hello all, just dropping a list of functions that I find to be very useful ALL THE TIME in batch development. Hopefully you all find them useful too.



:mouse (yes clicking)
Lots of useful batch functions Ede968e0a4ecc9836dcc396245e56f06
::---------------------------------------------------------------------------------------
:: cMouse will create MOUSE.exe if not already exist in %temp%
::
:: @echo off & setlocal enableDelayedExpansion
:: call :cMouse
::
:: :main
::     cls
::     call :mouse
::     echo C = %c%
::     echo X = %x%
::     echo Y = %y%
:: goto :main
::
::
::---------------------------------------------------------------------------------------
:cMouse
if not exist "%temp%\mouse.exe" (
    for %%a in ("TVqQAAMAAAAEAAAA//8AALgAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
                "AAAAAAAAAAAAAAAAgAAAAA4fug4AtAnNIbgBTM0hVGhpcyBwcm9ncmFtIGNhbm5v"
                "dCBiZSBydW4gaW4gRE9TIG1vZGUuDQ0KJAAAAAAAAABQRQAATAECAAAAAAAAAAAA"
                "AAAAAOAADwMLAQYAAAAAAAAAAAAAAAAAQBEAAAAQAAAAIAAAAABAAAAQAAAAAgAA"
                "BAAAAAAAAAAEAAAAAAAAAFAhAAAAAgAAAAAAAAMAAAAAABAAABAAAAAAEAAAEAAA"
                "AAAAABAAAAAAAAAAAAAAACAgAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
                "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
                "AAAAAAAAAABcIAAALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC50ZXh0AAAA"
                "ABAAAAAQAAAAAgAAAAIAAAAAAAAAAAAAAAAAACAAAGAuZGF0YQAAAFABAAAAIAAA"
                "UgEAAAAEAAAAAAAAAAAAAAAAAABAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
                "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVieWB7AgAAACQjUX6UOgs"
                "AAAAg8QED79F/lAPv0X8UA+2RfpQuAAgQABQ6IgBAACDxBC4AAAAAOkAAAAAycNV"
                "ieWB7CQAAACQuPb///9Q6GwBAACJRfy4AAAAAIlF3I1F+FCLRfxQ6FwBAACLRfiD"
                "yBCD4L+D4N9Qi0X8UOhOAQAAi0XchcAPhAUAAADpnAAAAI1F9FC4AQAAAFCNReBQ"
                "i0X8UOgvAQAAD7dF4IP4Ag+FcwAAAItF6IP4AbgAAAAAD5TAiUXchcAPhA8AAACL"
                "RQi5AQAAAIgI6SMAAACLReiD+AK4AAAAAA+UwIlF3IXAD4QKAAAAi0UIuQIAAACI"
                "CItF3IXAD4QdAAAAi0UIg8ACD79N5GaJCItFCIPAAoPAAg+/TeZmiQjpVP///4tF"
                "+FCLRfxQ6JUAAADJwwAAAFWJ5YHsFAAAAJC4AAAAAIlF7LgAAAMAULgAAAEAUOh9"
                "AAAAg8QIuAEAAABQ6HcAAACDxASNRexQuAAAAABQjUX0UI1F+FCNRfxQ6GEAAACD"
                "xBSLRfRQi0X4UItF/FDoXf7//4PEDIlF8ItF8FDoRgAAAIPEBMnDAP8lXCBAAAAA"
                "/yV0IEAAAAD/JXggQAAAAP8lfCBAAAAA/yWAIEAAAAD/JWAgQAAAAP8lZCBAAAAA"
                "/yVoIEAAAAD/JWwgQAAAACVkICVkICVkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
                "iCAAAAAAAAAAAAAAtCAAAFwgAACgIAAAAAAAAAAAAAD9IAAAdCAAAAAAAAAAAAAA"
                "AAAAAAAAAAAAAAAAvyAAAMggAADVIAAA5iAAAPYgAAAAAAAACiEAABkhAAAqIQAA"
                "OyEAAAAAAAC/IAAAyCAAANUgAADmIAAA9iAAAAAAAAAKIQAAGSEAACohAAA7IQAA"
                "AAAAAG1zdmNydC5kbGwAAABwcmludGYAAABfY29udHJvbGZwAAAAX19zZXRfYXBw"
                "X3R5cGUAAABfX2dldG1haW5hcmdzAAAAZXhpdABrZXJuZWwzMi5kbGwAAABHZXRT"
                "dGRIYW5kbGUAAABHZXRDb25zb2xlTW9kZQAAAFNldENvbnNvbGVNb2RlAAAAUmVh"
                "ZENvbnNvbGVJbnB1dEEAAAAA") do (
                    echo %%~a>>cMouse.txt
                )
   
    certutil -decode cMouse.txt %temp%\mouse.exe
    del /f /q cmouse.txt
)
goto :eof
 
:mouse
    for %%a in (c x y) do set "%%a="
    for /f "tokens=1-3" %%W in ('"%temp%\Mouse.exe"') do set /a "c=%%W,x=%%X,y=%%Y"
goto :eof
 

NOTE: :write requires :length function
:canvas, :showCanvas, :updateCanvas
Lots of useful batch functions 43d2fb2c71c562b6e56efd7b053e29fd
:: Function package: canvas, showCanvas, updateCanvas
:: returns = _[0-n], width, height
::
:: Parameters are returned as width and height
::
:: call :canvas 50 50
:: I would like a canvas of 50 LINES that are 50 COLUMNS long
::
:: call :canvasDisplay
:: pause
::
:: width = 50 height 30
::
:: call :canvas %width% %height%
::
::---------------------------------------------------------------------------------------
:canvas
    @echo off
        set /a "width=%~1 - 1", "height=%~2 - 1", "_=-1", "conWidth=width + 4", "conHeight=height + 5"
        if exist cursorpos.exe ( set "cls=cursorpos 0 0" ) else ( set "cls=cls" )
        for /l %%a in (-2,1,%width%) do set "outerBuffer=!outerBuffer!#"
        for /l %%a in (1,1,%width%)  do set "widthBuffer=!widthBuffer! "
        call :updateCanvas
        mode con: cols=%conWidth% lines=%conHeight%
    goto :eof
   
    :updateCanvas
        for /l %%a in (1,1,%height%) do set /a "_+=1" & set "_[!_!]=%widthBuffer%"
        set "_="
    goto :eof
   
    :showCanvas
        %cls%
        echo=%outerBuffer%
        for /l %%a in (1,1,%height%) do echo=#!_[%%a]!#
        echo=%outerBuffer%
    goto :eof
goto :eof

:plot x y
Lots of useful batch functions C440c6c1ab2bccdc4025338939115b5e
::--------------------------------------------------------------------------------------
::
:: REQUIRES: :canvas, :canvasDisplay
::
:: Can place a point on X,Y created by :canvas
::
:: call :canvas
::
:: set x=10
:: set y=15
::
:: call :plot %x% %y%
::
:: call :canvasDisplay
::--------------------------------------------------------------------------------------
:plot x y
    setlocal
        set /a "_x2=%~1 + 1"
        (endlocal
            set "_[%~2]=!_[%~2]:~0,%~1!.!_[%~2]:~%_x2%!"
            if "%~3" neq "" set "plot[%~1,%~2]="
        )
goto :eof

:plotLine x0 y0 x1 y1
Lots of useful batch functions E87bb4237021873264c25ef1105d90cb
:: -------------------------------------------------------------------------------------------
:: :plotLine x0 y0 x1 y1  requires :canvas, :showCanvas, :plot
::
:: call :canvas 30 30
::
:: call :plotLine 14 6 24 23
::
:: call :showCanvas
::
:: -------------------------------------------------------------------------------------------
:plotLine x0 y0 x1 y1
    set /a "x0=%~1", "y0=%~2", "x1=%~3", "y1=%~4", "dx=x1 - x0", "dy=y1 - y0"
   
    if %dy% lss 0 ( set /a "dy=-dy", "stepy=-1" ) else ( set /a "stepy=1")
    if %dx% lss 0 ( set /a "dx=-dx", "stepx=-1" ) else ( set /a "stepx=1")
   
    set /a "dx<<=1", "dy<<=1"
 
    if %dx% gtr %dy% (
        set /a "fraction=dy - (dx >> 1)"
        for /l %%x in (%x0%,%stepx%,%x1%) do (
            if !fraction! geq 0 (
                set /a "y0+=stepy"
                set /a "fraction-=dx"
            )
            set /a "fraction+=dy"
            if 0 leq %%x if %%x lss %width% if 0 leq !y0! if !y0! lss %width% (
                call :plot %%x !y0!
            )
        )
    ) else (
        set /a "fraction=dx - (dy >> 1)"
        for /l %%y in (%y0%,%stepy%,%y1%) do (
            if !fraction! geq 0 (
                set /a "x0+=stepx"
                set /a "fraction-=dy"
            )
            set /a "fraction+=dx"
            if 0 leq !x0! if !x0! lss %width% if 0 leq %%y if %%y lss %width% (
                call :plot !x0! %%y
            )
        )
    )
    for %%a in (x0 y0 x1 y1 dx dy stepx stepy fraction) do set "%%a="
goto :eof

:swap VAR1 VAR2
Lots of useful batch functions 0f7ba896231a8e9b5a0b5510f02f7691
:: --------------------------------------------------------------------------------------
:: :swap x y    swap values of VAR1 and VAR2
::
:: set /a "x=14", "y=27"
::
:: echo X = %x% Y = %y%
::
:: call :swap x y
::
:: echo X = %x% Y = %y%
::
:: --------------------------------------------------------------------------------------
:swap
    setlocal
        set "temp=!%~1!"
        (endlocal
            set "%~1=!%~2!"
            set "%~2=%temp%"
        )
goto :eof

:ellipse x y r
Lots of useful batch functions 9b8657a8e154ef2718040166d360fa82
:: ------------------------------------------------------------------------------------------------------
::
:: REQUIRES :canvas, :plot, :showCanvas
::
:: draws a circle on x,y with a radius of r
::
:: call :ellipse x y r
::
:: call :canvas 40 40
::
:: call :ellipse 7 7 3
::
:: call :showCanvas
::
:: ------------------------------------------------------------------------------------------------------
:ellipse x y r
    for /l %%y in (-%~3,1,%~3) do for /l %%x in (-%~3,1,%~3) do (
       
        set /a "S=(%%x * %%x) + (%%y * %%y) - (%~3 * %~3) - 1", "t=-%~3 - 1"
        if !S! geq !t! if !S! leq 1 ( set /a "x=%%x + %~1", "y=%%y + %~2" & call :plot !x! !y! )
       
    )
goto :eof

:rect x y h w
Spoiler (Click to Hide)
Lots of useful batch functions 3cada3bc27c4547d01d2e2736bfdf65f
:: -------------------------------------------------------------------------------------------------------
:: :rect x y h w    requires :canvas, :showCanvas, :plot, :plotLine
::
:: call :canvas 30 30
::
:: call :rect 14 6 3 5
::
:: call :showCanvas
::
:: -------------------------------------------------------------------------------------------------------
:rect x y h w
    set /a "rect_x=%~1", "rect_y=%~2", "rect_h=%~2 + %~4", "rect_w=%~1 + %~3"
    call :plotLine %rect_x% %rect_y% %rect_w% %rect_y%
    call :plotLine %rect_x% %rect_y% %rect_x% %rect_h%
    call :plotLine %rect_w% %rect_h% %rect_w% %rect_y%
    call :plotLine %rect_w% %rect_h% %rect_x% %rect_h%
    for %%a in (rect_h rect_w rect_x rect_y) do set "%%a="
goto :eof

:emptyVarEnviornment

 
:: Parameters are names of variables that you do NOT want to be cleared.
::
:: call :emptyVarEnviornment var1 var2
::
:: var1 and var2 will be preserved
::---------------------------------------------------------------------------------------
:emptyVarEnviornment
    set "preserve= preserve path %~1 "
    for /f "delims==" %%v in ('set') do if "!preserve: %%v =!" equ "!preserve!" set "%%v="
    set "preserve="
goto :eof

:hexPrint
Spoiler (Click to Hide)
Lots of useful batch functions 81fd2faca669a7c7fa46d8747d6757e8
:: Get special characters
::
::    call :hexPrint 0x03 heart
::    call :hexPrint 0x04 diamond
::    call :hexPrint 0x05 club
::    call :hexPrint 0x06 spade
::
:: first parameter is hex for character you want
:: second parameter is name of variable it is given to
::
::---------------------------------------------------------------------------------------
 
:hexPrint  string  [rtnVar]
    for /f delims^=^ eol^= %%A in (
        'forfiles /p "%~dp0." /m "%~nx0" /c "cmd /c echo(%~1"'
    ) do if "%~2" neq "" (set %~2=%%A) else echo(%%A
goto :eof

:color
Spoiler (Click to Hide)
Lots of useful batch functions 5d781a705a63ca21c6a3d12d0e6cec3f
::---------------------------------------------------------------------------------------
:: Color text on screen
::
:: call :color 5D "Hello World" 1
:: call :color EC "Hello World" 0
:: call :color 9A "Hello World" 0
::
::---------------------------------------------------------------------------------------
:color
    set nL=%3
    if not defined nL echo requires third argument & pause > nul & goto :eof
    if %3 == 0 <nul set /p ".=">%2 & findstr /v /a:%1 /r "^$" %2 nul & del %2 2>&1 & goto :eof
    if %3 == 1 echo >%2 & findstr /v /a:%1 /r "^$" %2 nul & del %2 2>&1 & goto :eof

:prep_CalcFPS, :calcFPS
::---------------------------------------------------------------------------------------
:: FPS CALC and FPS Delay
::
:: @echo off & setlocal enableDelayedExpansion
:: call :prep_calcFPS 1-99
::
:: :main
::    
::     call :calcFPS
:: goto :main
::
::
::---------------------------------------------------------------------------------------
:prep_calcFPS
    set /A cs=100/%~1
    set t=!time: =0!
goto :eof
:calcFPS
    (      
        set tc=!time: =0!
 
        for /F "tokens=1-8 delims=:.," %%a in ("!t!:!tc!") do (
            set /a "a=(((1%%e-1%%a)*60)+1%%f-1%%b)*6000+1%%g%%h-1%%c%%d, a+=(a>>31) & 8640000"
        )
       
        if !a! lss !cs! goto :calcFPS
        if !a! gtr !cs! set /a a-=1
 
        set t=!tc!
        if !a! neq 0 (set /A fps=100/a) else set fps=?
        title FPS:!fps!/s
    )
goto :eof

:delay
::---------------------------------------------------------------------------------------
:: Delay NUMBER(1-n)
::
:: More useful than timeout or ping
::
::
:: instead, use
:: call :delay 10
::
:: will delay for 10ms
::
::---------------------------------------------------------------------------------------
:delay
    for /f "tokens=2 delims=." %%a in ("%time%") do (set "c=%%a")
    if "%c:~0,1%" == "0" set "c=%c:~1%"
    set /a l=%c% + %~1
    :wait
    set "cPrev=%c%"
    for /f "tokens=2 delims=." %%a in ("%time%") do (set "c=%%a")
    if "%c:~0,1%" == "0" set "c=%c:~1%"
    if %cPrev% GTR %c% set /a l-=100
    if %c% LSS %l% goto :wait
goto :eof

:length
::---------------------------------------------------------------------------------------
:: Get the length of a string or number
::
:: call :length "Hello World" varName
:: echo %varName%
::---------------------------------------------------------------------------------------
:length
    setlocal
        set "str=X%~1"
        set length=0
        for /L %%a in (8,-1,0) do (
            set /a "length|=1<<%%a"
            for %%b in (!length!) do if "!str:~%%b,1!" equ "" set /a "length&=~1<<%%a"
        )
    (endlocal
        if "%~2" neq "" ( set "%2=%length%" ) else echo %length%
    )
goto :eof

:pow

::---------------------------------------------------------------------------------------
::  square a number
::
:: call :pow 12 2 RETURNVAR
:: echo %RETURNVAR%
::---------------------------------------------------------------------------------------
:pow
    setlocal
        set "out=1"
        for /l %%a in (1,1,%2) do set /a "out*=%1"
        if %~1 equ 0 set "out=1"
       
        (endlocal
            if "%~3" neq "" ( set "%~3=%out%" ) else echo %out%
        )
goto :eof

:factorial
::---------------------------------------------------------------------------------------
::  Get the factorial of a number
::
:: call :factorial 7 RETURNVAR
:: echo %RETURNVAR%
::---------------------------------------------------------------------------------------
:factorial
    setlocal
        set "out=1"
       
        for /l %%a in (%~1,-1,1) do set /a "out*=%%a"
        if %~1 equ 0 set "out=1"
       
        (endlocal
            if "%~2" neq "" ( set "%~2=%out%" ) else echo %out%
        )
goto :eof

:sqrt
::--------------------------------------------------------------------------------------------------
:: Square root a number
::
:: call :sqrt 144
:: call :sqrt 144 return_var
::
::--------------------------------------------------------------------------------------------------
:sqrt
    setlocal
        set "s=%~1"
        set /A "x=s/(11*1024)+40,x=(s/x+x)>>1,x=(s/x+x)>>1,x=(s/x+x)>>1,x=(s/x+x)>>1,x=(s/x+x)>>1,x+=(s-x*x)>>31
    (endlocal
        if "%~2" neq "" ( set %~2=%x% ) else echo %x%
    )
goto :eof

:specialCharacters
Spoiler (Click to Hide)
Code:
Code:
:: obtain special characters     BS, FF, BEL, CtrlZ, CR, LF, TAB

::

:: call :specialChars

::

:: %BS% = backspace

:: %BEL% = sound character

:: %FF% freeform female character

:: %CtrlZ% = Ctrl + Z

:: %CR% = Carriage return

:: %LF% = Line feed

::------------------------------------------------------------------------------

:specialChars

    :: Backspace

    for /f %%a in ('"prompt $H&for %%b in (1) do rem"') do set "BS=%%a"

    :: FreeForm

    >con ( for /f %%a in ('cls') do ( set "FF=%%a") )

    :: BEL (sound)

    for /f %%i in ('forfiles /m "%~nx0" /c "cmd /c echo 0x07"') do set "BEL=%%i"

    :: Ctrl-Z  0x1A  decimal 26

    :zL

    copy nul "%temp%\ctrlZ.tmp" /a <nul >nul

    (for /f "usebackq" %%A in ("%temp%\ctrlZ.tmp") do set "CtrlZ=%%A")2>nul||goto :zL

    del "%temp%\ctrlZ.tmp" 2>nul

    :: Linefeed  0x0A  decimal 10

    (set LF=^

    %= Do not remove or alter this line =%

    )

    :: Carriage Return  0x0D  decimal 13

    for /f %%A in ('copy /z "%~dpf0" nul') do set "CR=%%A"

    :: Tab 0x09

    for /f "delims=" %%T in ('forfiles /p "%~dp0." /m "%~nx0" /c "cmd /c echo(0x09"') do set "TAB=%%T"

goto :eof

::------------------------------------------------------------------------------

:Neg_Or_Pos
Lots of useful batch functions 90d7340bd149b5abfc1e21779bc8be39
::     call :Neg_or_Pos NUMBER [/p, /n, /r] outVAR
::
::          /p    -    records NUMBER to outVAR IF NUMBER is Positive
::          /n    -    records NUMBER to outVAR IF NUMBER is Negative
::          /r    -    records NUMBER to outVAR regardless
::
::          outVAR = any name you want, but must not contain variables.
 
:Neg_or_Pos
    set "NoP_p2=%~2"
    echo %1|findstr /c:"-" >nul 2>&1
    if "!NoP_p2!" equ "" (
        if !errorlevel! equ 1 echo  %1 = Positive
        if !errorlevel! equ 0 echo %1 = Negative
        goto :eof
    ) else if not "!NoP_p2!" equ "" (
        if /i "!NoP_p2:~1,1!" equ "p" if !errorlevel! equ 1 set "%~3=%1"
        if /i "!NoP_p2:~1,1!" equ "n" if !errorlevel! equ 0 set "%~3=%1"
        if /i "!NoP_p2:~1,1!" equ "r" set "%~3=%1"    
    )
    set "NoP_p2="

:Grid
Lots of useful batch functions 269d4585dbae2f569995ff4250dc93d8
:: call :grid /A-Z NUMBER "boxHeightxboxWidth" /s
::
::      /A-Z is rows, allowing up to 26. Meaning you can have 26 boxes long.
::      
::      NUMBER = Number of boxes tall
::
::      "boxHeightxboxWidth" = Height and Width of individual boxes
::
::      /s = OPTIONAL will display overlay data of grid.
::      
::
::      call :grid /E 3 "5x9" /s
 
:grid
    set "_t=A B C D E F G H I J K L M N O P Q R S T U V W X Y Z"
    set "gHeight=%2" & set "z=%1" & set "z=!z:~1,1!"
    for %%a in (%_t%) do set /a "i+=1" & if /i "%%a" equ "%z%" set "gWidth=!i!"
    for /f "tokens=1,2 delims=x" %%a in ("%~3") do set /a "bHeight=%%a + 1", "bWidth=%%b"
    set /a "g=((gWidth * bWidth) + bWidth)", "gridMaxHeight=(gHeight * bHeight) + 1"
    set /a "gridMaxWidth=g - bWidth + gWidth + 1", "_w=bWidth + 1"
    for /l %%a in (1,1,%bWidth%)                do set "s=!s! "
    for /l %%a in (1,%bWidth%,%g%)              do set "d=!d!!s!#"
    for /l %%a in (1,1,%gridMaxHeight%)         do set "line[%%a]=#!line[%%a]!!d:~0,-%bWidth%!"
    for /l %%a in (1,1,%gridMaxWidth%)          do set "line[0]=!line[0]!#"  
    for /l %%a in (1,%bHeight%,%gridMaxHeight%) do set "line[%%a]=!line[0]!"
    if "%~4" equ "/s" set "ol=GRID: %gridMaxHeight%x%gridMaxWidth%/[A-%z%] x %gHeight%. - %~3 boxes"

:init_rainbow, :Rainbow_text
Lots of useful batch functions 1f9177844160c4f603f7c766f0285858
:: ---------------------------------------------------------------------------------------------------------------------------
:: Displays rainbow text up to 45 chars
::
:: call :init_rainbow
:: call :rainbow_text "TEXT
::
:: ---------------------------------------------------------------------------------------------------------------------------
:rainbow_text
    set "str=x%~1" & <nul set /p ".=["
    for %%a in (%rainbow_text%) do (
        set /a "i+=1"
        call set "ex_str=%%str:~!i!,1%%"
       
       
        if "!ex_str!" equ "" ( <nul set /p ".=]" & echo. & goto :eof )
        if "!ex_str!" equ " " (
            <nul set /p ".=] ["
        ) else (
            (> colorPrint.txt (echo [!ex_str!]\..\') && findstr /a:0%%a /f:colorPrint.txt ".")
        )
    )
 
:init_rainbow
    set "rainbow_text=4 C 6 E 2 A 1 9 3 B 5 D F 7 8 0 4 C 6 E 2 A 1 9 3 B 5 D F 7 8 0 4 C 6 E 2 A 1 9 3 B 5 D F 7 8 0"
    for /F "tokens=1,2 delims=#" %%a in ('"prompt #$H#$E & echo on & for %%b in (1) do rem"') do set "DEL=%%a"
    <nul set /p ".=%DEL%%DEL%%DEL%%DEL%%DEL%%DEL%" > "'"
goto :eof

CLICK ME :build_alphabet, :bigText
Lots of useful batch functions 029f45da1e1ec49c995934453c45c61e
:: --------------------------------------------------------------------------------------------------------------------------------------------------------------------
:: :bigText  displays color in desired from from :build_alphabet function (NOT COMPLETE)
::
:: call :bigText "Hello" 54 " " 1f "World" c3
:: --------------------------------------------------------------------------------------------------------------------------------------------------------------------
:bigText
    setlocal
        set "a=1"
        :getArgs
            if "%~1" neq "" set /a "args+=1" & set "t[!args!]=%~1"
            if "%~2" neq "" set "c[!args!]=%~2"
            shift & shift & if "%~1" neq "" ( goto :getArgs )
 
        :getLetter
            if defined t[%a%] (
                set "e[%a%]=!t[%a%]:~%p%,1!" & set "cs=!e[%a%]!"
                set /a "p+=1", "n[%a%]+=1"
                set "cha[%a%][!n[%a%]!]=!cs!"
                if "!cs!" equ "" set /a "a+=1", "p=0"
                goto :getLetter
            )
           
        for /l %%c in (1,1,%b_a_btMAX%) do for /l %%a in (1,1,%args%) do for /l %%b in (1,1,!n[%%a]!) do call set "o[%%a][%%c]=!o[%%a][%%c]!%%_!cha[%%a][%%b]![%%c]%%"
        for /l %%b in (1,1,%b_a_btMAX%) do ( for /l %%a in (1,1,%args%) do (>cp.txt ( echo=!o[%%a][%%b]!\..\') && findstr /a:!c[%%a]! /f:cp.txt ".") ) & echo.
    endlocal


Lots of useful batch functions H0XR2SR

Admin
Admin

Posts : 23
Join date : 2017-03-11

https://toolssupplier.board-directory.net

Back to top Go down

Back to top


 
Permissions in this forum:
You cannot reply to topics in this forum