Решение использует команду FOR :
@echo off
set "ConstrutionTime="
for /F "tokens=2 delims=()" %%I in ('%SystemRoot%\System32\find.exe /I "constructiontime" file.cfg') do set "ConstrutionTime=%%I"
if defined ConstrutionTime echo The construction time is: %ConstrutionTime%
FOR запускает командную строку, как указано в круглых скобках, в отдельном командном процессе, начинающемся с %ComSpec% /C
в фоновом режиме и захватывает все выходные данные для обработки STDOUT этого командного процесса, который является выводом FIND , если строка может быть найдена в любой строке.
После завершениязапущенного командного процесса захваченный вывод обрабатывается FOR построчно.Пустые строки игнорируются, а также строки, начинающиеся с точки с запятой, которая является символом конца строки по умолчанию.
FOR разбивает все остальные строки на подстроки, используя (
и )
в качестве разделителейиз-за delims=()
.Первая подстрока в этом случае constructiontime
, которая не представляет интереса.Вторая подстрока - 10
, представляющая интерес.Третья подстрока будет ;
, что также не представляет интереса.По этой причине tokens=2
используется для присвоения второй подстроки указанной переменной цикла I
.
Значение переменной цикла I
присваивается переменной окружения ConstrutionTime
, которая используется в следующей командной строкечтобы показать результат при запуске этого небольшого командного файла из окна командной строки.
Для понимания используемых команд и их работы откройте окно командной строки, выполните там следующие команды и полностью прочитайте всю справкустраницы для каждой команды отображаются очень тщательно.
echo /?
find /?
for /?
if /?
set /?