Как искать строку с ConstructionTime (10); в файл и получить номер, присвоенный переменной? - PullRequest
1 голос
/ 15 апреля 2019

Команда

find /i "constructiontime" file.cfg

выводит строку

constructiontime(10);

Я хочу прочитать в этой строке и получить только номер, присвоенный переменной, независимо от того, что является числовым значением.

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

1 Ответ

0 голосов
/ 15 апреля 2019

Решение использует команду 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 /?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...