批量获取2个字符之间的字符串

时间:2018-07-26 11:24:22

标签: batch-file substring

我有一个文本文件,其内容类似于以下内容:

test.txt

FIPS job <1532602344643_1>  of size <134> successfully created.
<134>  files successfully exported.
<0>  files failed.

我想将字符串存储在变量的前两个尖括号之间。在此示例中,它是1532602344643_1。字符串的长度应相同,但在所有其他括号中,长度可能会改变。

这是我的新手,所以有人可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

这是执行所需操作的批处理文件:

@echo off
set TEXT_FILE=text.txt
setlocal enabledelayedexpansion
set modules=
for /f "tokens=*" %%i in (%TEXT_FILE%) do (
  set "tmp=%%~i"
  set modulesFromLine=
  call :getNext modulesFromLine "!tmp!"
  if "-!modules!"=="-" (
    set modules=!modulesFromLine!
  ) else (
    set modules=!modules!,!modulesFromLine!
  )
)
endlocal & set REZULT=%modules%&
echo. %REZULT%
exit /b 0

:getNext
setlocal
  set accumulator=
  set "tmp=%~2"
  set "tmp=!tmp:*<=!"
  set "tail=>!tmp:*>=!"
  call set "module_name=%%tmp:!tail!=%%"
  if not "-!module_name!"=="-" (
    call :getNext %1 "!tail!"
    if "-!%1!"=="-" (
      set "accumulator=!module_name!"
    ) else (
      set "accumulator=!module_name!,!%1!"
    )
  )
endlocal & set %1=%accumulator%&
exit /b 0

将文件放入TEXT_FILE并保存RESULT。请记住,字符串不应该包含"

如果您想阅读有关批次wiki的内容,则很适合开始学习。