Removing non alphanumeric characters in a batch variable

后端 未结 3 810
慢半拍i
慢半拍i 2021-01-03 08:07

In batch, how would I remove all non alphanumeric (a-z,A-Z,0-9,_) characters from a variable?

I\'m pretty sure I need to use findstr and a regex.

3条回答
  •  滥情空心
    2021-01-03 08:38

    @echo eof
    
    call :purge "~~asd123#()%%%^"^!^"~~~^:^=asd^>^  . '  [ ] { }  ` ^| ^"  ) do (
       set "str1=!str1:%%a=!"
     )
    
     rem dealing with some delimiters
    
    
     set "str1=!str1:(=!"
     set "str1=!str1:)=!"
     set "str1=!str1:;=!"
     set "str1=!str1:,=!"
     set "str1=!str1:^^=!"
     set "str1=!str1:^~=!"
    
     set "temp_str=" 
     for %%e in (%str1%) do (
      set "temp_str=!temp_str!%%e"
     )
    
    endlocal & set "str1=%temp_str%"
    
    
    
    setlocal disableDelayedExpansion
    set "str1=%str1:!=%"
    set "str1=%str1::=%"
    set "str1=%str1:^^~=%"
    
    for /f "tokens=* delims=~" %%w in ("%str1%") do set "str1=%%w"
    
    endlocal & set "str1=%str1%"
    
    
    
    endlocal &  if "%~2" neq "" (set %~2=%str1%) else echo %str1%
    
    goto :eof
    

    Still cannot deal with ~ and = but working on it

    EDIT: = now will be cleared EDIT: ~ now will be cleared

提交回复
热议问题