Advertisement
T3RRYT3RR0R

Batch Substring Filter

Jun 22nd, 2020 (edited)
528
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Batch 1.49 KB | None | 0 0
  1. :FilterSubstring  <Filter VarName> <return varName> <Filter type [/A /L /N]> ["/O:Output FileName.ext"]
  2. @Echo Off & Setlocal EnableDelayedExpansion & CD "%~dp0"
  3. If "%~3"=="" (Endlocal & Echo/Filter Switch Required^
  4. %= newline =%
  5. /L:Letters /N:Numbers /A:Alphanumeric& Pause > Nul & Exit /B 1)
  6. Set ".rVar="&Set ^"Params=%*^"&Set "%3="
  7. (Echo/"!Params!" | Findstr /I /C:/A > Nul 2> Nul) && Set "%3=a-zA-Z0-9"
  8. (Echo/"!Params!" | Findstr /I /C:/L > Nul 2> Nul) && Set "%3=a-zA-Z"
  9. (Echo/"!Params!" | Findstr /I /C:/N > Nul 2> Nul) && Set "%3=0-9"
  10. If  "!%3!" == "" (Endlocal & Echo/Invalid Filter "%~3": /L : Letters /N : Numbers /A : Alphnumerical & Pause > Nul & Exit /B 1) Else Set "Mode=!%3!"
  11. IF Not "!%~1!"=="" (Call :Extract "%~1") Else (Endlocal & Echo/Error: %1 is not defined. & Pause > Nul & Exit /B 1)
  12. Set "%~2=!.rVar!"
  13. (Echo/"!Params!" | Findstr /I /C:/D > Nul 2> Nul) && Set %~2
  14. Set "Params=!Params:*/O:=/O:!"
  15. If "!Params:~0,3!"=="/O:" >>"!Params:/O:=!" Echo/!%~2!
  16. (Endlocal & Set "%2=%.rVar%") 2> Nul || (Echo/Return Variable required & Pause > Nul & Exit /B 1)
  17. Exit /B 0
  18. :Extract <defined var containing string> rem // %%L: Get StringLen. %%#: Iterate over each character in StrLen. %%i: Test Character type using Findstr and assign numeric values to return var.
  19. For %%L in (20 40 80 160 320) Do IF "!%~1:~%%L,1!"=="" For /L %%# in (0,1,%%L) Do If "!%~1:~%%#,1!"=="" (For /L %%i in (0,1,%%#) Do (Set "C=!%~1:~%%i,1!" & Echo/"!C!" | findstr /R "[!Mode!]" >nul 2>nul && Set ".rVar=!.rVar!!C!"))& Exit /B
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement