Building blocks for scripting

Discussion in 'Scripting' started by berr1sfueller, Feb 22, 2023.

  1. berr1sfueller

    berr1sfueller MDL Senior Member

    Nov 17, 2022
    413
    450
    10
    #1 berr1sfueller, Feb 22, 2023
    Last edited: Feb 22, 2023
    □□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
    Community script building blocks - macros - chunks
    □□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
    Nothing spectacular but will continue adding stuff

    - Choice menu -
    Code:
    @ECHO OFF
    ECHO ===============
    ECHO WELCOME TO MENU
    ECHO ===============
    ECHO (1)CHOICE 1
    ECHO (2)CHOICE 2
    ECHO (3)CHOICE 3
    ECHO (A)CHOICE A
    ECHO (B)CHOICE B
    ECHO (C)CHOICE C
    ECHO (Q)uit
    ECHO ===============
    ECHO What'll it be?
    SET /P "SELECT=$>>"
    FOR %%$ in (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) DO (CALL SET "SELECT=%%SELECT:%%$=%%$%%")
    IF "%SELECT%"=="1" GOTO :MENU_OPTION_1
    IF "%SELECT%"=="2" GOTO :MENU_OPTION_2
    IF "%SELECT%"=="3" GOTO :MENU_OPTION_3
    IF "%SELECT%"=="A" GOTO :MENU_OPTION_A
    IF "%SELECT%"=="B" GOTO :MENU_OPTION_B
    IF "%SELECT%"=="C" GOTO :MENU_OPTION_C
    IF "%SELECT%"=="Q" GOTO :END
    GOTO :END
    :MENU_OPTION_1
    ECHO - MENU OPTION 1 -
    GOTO :END
    :MENU_OPTION_2
    ECHO - MENU OPTION 2 -
    GOTO :END
    :MENU_OPTION_3
    ECHO - MENU OPTION 3 -
    GOTO :END
    :MENU_OPTION_A
    ECHO - MENU OPTION A -
    GOTO :END
    :MENU_OPTION_B
    ECHO - MENU OPTION B -
    GOTO :END
    :MENU_OPTION_C
    ECHO - MENU OPTION C -
    GOTO :END
    :END
    PAUSE
    
    - Counter menu -
    Code:
    SET NUMBER=0
    SET CALC=ADD
    :START
    @ECHO OFF
    ECHO ===============
    ECHO Mode(+/-)[%CALC%]
    ECHO ===============
    ECHO  CUR[%NUMBER%]
    ECHO ===============
    ECHO Enter a number
    SET /P "SELECT=#>>"
    IF "%SELECT%"=="+" SET CALC=ADD
    IF "%SELECT%"=="-" SET CALC=SUB
    IF "%CALC%"=="ADD" SET /A NUMBER+=%SELECT%
    IF "%CALC%"=="SUB" SET /A NUMBER-=%SELECT%
    IF NOT "%SELECT%"=="" GOTO :START
    :END
    PAUSE
    
    - Menu select any case -
    Code:
    @ECHO OFF
    SET /P "SELECT=$>>"
    ECHO %SELECT%
    PAUSE
    
    - Menu select lower case -
    Code:
    @ECHO OFF
    SET /P "SELECT=$>>"
    FOR %%$ in (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) DO (CALL SET "SELECT=%%SELECT:%%$=%%$%%")
    ECHO %SELECT%
    PAUSE
    
    - Menu select upper case -
    Code:
    @ECHO OFF
    SET /P "SELECT=$>>"
    FOR %%$ in (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) DO (CALL SET "SELECT=%%SELECT:%%$=%%$%%")
    ECHO %SELECT%
    PAUSE
    
    - Custom prompt menu select any case -
    Code:
    @ECHO OFF
    SET CUSTOM=CUSTOM
    SET /P "SELECT=%CUSTOM%>>"
    ECHO %SELECT%
    PAUSE
    
    - Custom prompt menu select lower case -
    Code:
    @ECHO OFF
    SET CUSTOM=CUSTOM
    SET /P "SELECT=%CUSTOM%>>"
    FOR %%$ in (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) DO (CALL SET "SELECT=%%SELECT:%%$=%%$%%")
    ECHO %SELECT%
    PAUSE
    
    - Custom prompt menu select upper case -
    Code:
    @ECHO OFF
    SET CUSTOM=CUSTOM
    SET /P "SELECT=%CUSTOM%>>"
    FOR %%$ in (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) DO (CALL SET "SELECT=%%SELECT:%%$=%%$%%")
    ECHO %SELECT%
    PAUSE
    
    - Custom reg query + set (configured to switch console setting) -
    Code:
    SET REG_SEEK=0X1
    SET REG_KEY=HKCU\Console
    SET REG_VAL=ForceV2
    SET REG_TYPE=REG_DWORD
    SET REG_DAT=0
    FOR /F "TOKENS=3" %%a in ('REG QUERY "%REG_KEY%" /v "%REG_VAL%" ^| findstr /r "%REG_VAL%"') do (IF "%%a"=="%REG_SEEK%" REG ADD "%REG_KEY%" /v "%REG_VAL%" /t "%REG_TYPE%" /d "%REG_DAT%" /f)
    
    - Find character in a string of text -
    Code:
    @ECHO OFF
    SET FIND_CHAR=X
    SET INPUT=STRING OF TEXT
    FOR /F "DELIMS=" %%$ IN ('CMD.EXE /D /U /C ECHO %INPUT%^| FIND /V ""') do (IF "%%$"=="%FIND_CHAR%" CALL SET "FOUND_CHAR=FOUND")
    ECHO %FOUND_CHAR%
    PAUSE
    
    - List related -
    Code:
    TBD
    
    - BCD related -
    Code:
    TBD
    
    - DISM related -
    Code:
    TBD
    
    - REG related -
    Code:
    TBD
    
     
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  2. xrononautis

    xrononautis MDL Senior Member

    Mar 30, 2021
    303
    147
    10
    #2 xrononautis, Mar 14, 2023
    Last edited: Mar 14, 2023
    Architecture Check:
    Code:
    if "%PROCESSOR_ARCHITECTURE%"=="AMD64" (set arch=x64) else (if "%PROCESSOR_ARCHITEW6432%"=="AMD64" (set arch=x64) else (set arch=x86))
    if "%arch%" == "x64" (goto :x64)
    if "%arch%" == "x86" (goto :x86)
    
    :x64
    (some commands)
    goto :END
    
    :x86
    (some commands)
    goto :END
    
    :END
    
    Delay with an empty line between:
    Code:
    echo Starting in 10 seconds... && echo. && ping 127.0.0.1 -n 10 >nul
     
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  3. rpo

    rpo MDL Expert

    Jan 3, 2010
    1,447
    1,424
    60
    For delay, you can use timeout
     
  4. Dark Dinosaur

    Dark Dinosaur X Æ A-12

    Feb 2, 2011
    3,761
    5,225
    120
    #4 Dark Dinosaur, Apr 8, 2023
    Last edited: Apr 8, 2023
    Stupid things about Regex

    Code:
    Regex ~ Powershell
    Any number match between 1-99
    "^([1-9]|[1-9][0-9])$"
    
    @("1","22","1a","12c") | % {
      Write-host $_,'IS Match ?', @([regex]::Match($_,"^([1-9]|[1-9][0-9])$")).Success
    }
    
    Regex ~ Findstr
    Any number match between 1-99
    ^[1-9]$ ^[1-9][0-9]$
    
    for %$ in (1,11,1a,23b) do (^
    echo %$|(>nul findstr /r "^[1-9]$ ^[1-9][0-9]$") && echo %$ is Match || echo %$ is Not Match)

    Powershell Regex ...
    Any number between 0-99

    Code:
    ^([1-9]|([1-9][0-9]))$
    
    upload_2023-4-8_8-51-28.png

    upload_2023-4-8_8-58-14.png

    Findstr Command regex

    Code:
    ^[1-9]$ ^[1-9][0-9]$
    upload_2023-4-8_8-53-25.png

    we can continue with that rule of Space to add more regex check
    it can be [1-9], [10-99], [?:\]
    Code:
    "^[1-9]$ ^[1-9][0-9]$ ^[a-z]:\\$"
    
     
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...