批处理 - 获取文件名的一部分并将其分配给变量

时间:2016-09-12 14:02:20

标签: batch-file

我有一个像这样的文件名“C:\ data \ dbversion_1.0.2099.24765.txt”。此文件名全天不同。

我想只获取此文件名“1.0.2099.24765”的最后一部分,并将此值分配给任何变量。 (通常它应该是“dbversion_”和“.txt”之间的数据)

我该怎么做?

1 个答案:

答案 0 :(得分:0)

使用dir命令获取实际文件名,通过for /F循环解析其输出以获取扩展名为split off的纯文件名,然后使用substring replacement来获取(第一)强调_

rem Let `dir` get the actual file name, parse its output by `for /F`:
for /F "eol=| delims=" %%F in ('
    dir /B /A:-D "C:\data\dbversion_*.txt"
') do (
    set "NAME=%%~nF"
)
rem Do substring replacement:
set "NAME=%NAME:*_=%"
rem Use variable `%NAME%` here:
echo "%NAME%"

简单的标准for循环也可以实现相同的结果:

rem Let `for` get the actual file name:
for %%F in ("C:\data\dbversion_*.txt") do (
    set "NAME=%%~nF"
)
rem Do substring replacement:
set "NAME=%NAME:*_=%"
rem Use variable `%NAME%` here:
echo "%NAME%"