这里跟之前的一个版本功能差不多,这两个函数也是将一个不含特殊字符的字符串分割成左右两边,这里不同的是这个函数是逐个字符读入判断的,活性比较大,而且修改代码容易实现多分割付,以及其他功能

这个是从第一个字符开始最后一个字符

rem :get_var_f 字符串 分隔符 寄存器 [b 取右边] 默认取字符串左边

这里是最后一个字符开始到一个字符

rem :get_var_b 字符串 分隔符 寄存器 [f 取左边] 默认取字符串右边 

 
  
  1. @echo off 
  2. SETLOCAL ENABLEDELAYEDEXPANSION 
  3. set k=gh_00_00_00_02_00_00_101-2011-8-9.txt 
  4. echo %k% 
  5. call :get_var_f %k% _ asa  
  6. call :get_var_f gh_00_00_00_02_00_00_101-2011-8-9ad.txt - bbb b 
  7. echo newname:%asa%%bbb% 
  8. pause  
  9. goto :eof 
  10.  
  11. rem :get_var_f str tag var [b] 默认取字符串左边  
  12. :get_var_f  
  13. set Gsubstrf= 
  14. set Gf= 
  15. set Gtmpvarf=%1 
  16. :get_var_f_begin 
  17. set Gsubstrf=!Gtmpvarf:~%Gf%,1! 
  18. if not defined Gsubstrf goto :get_var_f_end 
  19. if "%Gsubstrf%"=="%2" goto :get_var_f_end 
  20. set /a Gf=%Gf%+1  
  21. goto :get_var_f_begin 
  22. :get_var_f_end 
  23. set %3=!Gtmpvarf:~0,%Gf%! 
  24. set /a Gf=%Gf%+1 
  25. if "%4"=="b" set %3=!Gtmpvarf:~%Gf%! 
  26. goto :eof 
  27.  
  28. rem :get_var_b str tag var [f] 默认取字符串右边 
  29. :get_var_b 
  30. set Gsubstrb= 
  31. set Gb= 
  32. set Gtmpvarb=%1 
  33. :get_var_b_begin 
  34. set /a Gb=%Gb%+1 
  35. set Gsubstrb=!Gtmpvarb:~-%Gb%,1! 
  36. if %Gsubstrb%==%2  goto :get_var_b_end 
  37. if "!Gtmpvarb:~-%Gb%!"=="!Gtmpvarb!" goto :get_var_b_end 
  38. goto :get_var_b_begin 
  39. :get_var_b_end 
  40. set %3=!Gtmpvarb:~-%Gb%! 
  41. ::set /a Gb=%Gb%+1 
  42. if "%4"=="f" set %3=!Gtmpvarb:~0,%Gb%! 
  43. goto :eof