2016-09-12 3 views
0

У меня есть имя файла, подобного этому «C: \ data \ dbversion_1.0.2099.24765.txt». Это имя файла меняется в течение дня.Batch - получить часть имени файла и присвоить его переменной

Я хочу получить только последнюю часть этого имени файла "1.0.2099.24765" и присвоить это значение любой переменной. (в общем случае это должны быть данные между «dbversion_» и «.txt»)

Как это сделать?

ответ

0

Используйте команду dir, чтобы получить фактическое имя файла, разобрать его выход на for /F петли, чтобы получить имя чистого файла с расширением отщепляется, а затем использовать замену подстроки, чтобы получить все после (первая) подчеркивает _:

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%" 
+0

Он работает. Спасибо. – user1523087

Смежные вопросы