这里跟之前的一个版本功能差不多,这两个函数也是将一个不含特殊字符的字符串分割成左右两边,这里不同的是这个函数是逐个字符读入判断的,活性比较大,而且修改代码容易实现多分割付,以及其他功能
这个是从第一个字符开始最后一个字符
rem :get_var_f 字符串 分隔符 寄存器 [b 取右边] 默认取字符串左边
这里是最后一个字符开始到一个字符
rem :get_var_b 字符串 分隔符 寄存器 [f 取左边] 默认取字符串右边
- @echo off
- SETLOCAL ENABLEDELAYEDEXPANSION
- set k=gh_00_00_00_02_00_00_101-2011-8-9.txt
- echo %k%
- call :get_var_f %k% _ asa
- call :get_var_f gh_00_00_00_02_00_00_101-2011-8-9ad.txt - bbb b
- echo newname:%asa%%bbb%
- pause
- goto :eof
- rem :get_var_f str tag var [b] 默认取字符串左边
- :get_var_f
- set Gsubstrf=
- set Gf=
- set Gtmpvarf=%1
- :get_var_f_begin
- set Gsubstrf=!Gtmpvarf:~%Gf%,1!
- if not defined Gsubstrf goto :get_var_f_end
- if "%Gsubstrf%"=="%2" goto :get_var_f_end
- set /a Gf=%Gf%+1
- goto :get_var_f_begin
- :get_var_f_end
- set %3=!Gtmpvarf:~0,%Gf%!
- set /a Gf=%Gf%+1
- if "%4"=="b" set %3=!Gtmpvarf:~%Gf%!
- goto :eof
- rem :get_var_b str tag var [f] 默认取字符串右边
- :get_var_b
- set Gsubstrb=
- set Gb=
- set Gtmpvarb=%1
- :get_var_b_begin
- set /a Gb=%Gb%+1
- set Gsubstrb=!Gtmpvarb:~-%Gb%,1!
- if %Gsubstrb%==%2 goto :get_var_b_end
- if "!Gtmpvarb:~-%Gb%!"=="!Gtmpvarb!" goto :get_var_b_end
- goto :get_var_b_begin
- :get_var_b_end
- set %3=!Gtmpvarb:~-%Gb%!
- ::set /a Gb=%Gb%+1
- if "%4"=="f" set %3=!Gtmpvarb:~0,%Gb%!
- goto :eof
转载于:https://blog.51cto.com/rzl01/648985