Как искать строку с помощью Effective («флаер», 100%);в файл и получить номер, присвоенный переменной? - PullRequest
0 голосов
/ 20 апреля 2019

Этот вопрос похож на мой предыдущий вопрос Как найти строку с ConstructionTime (10);в файле и получить номер, присвоенный переменной? , которая была решена Mofi с помощью следующего кода:

@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%

Я могу получить число 10 из строки с ConstructionTime=(10);, используя этокод из file.cfg.

А как насчет Effective("flyer", 100%);?
Как получить из него 100 и присвоить его переменной среды?

Ответы [ 2 ]

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

Решение, работающее для примера строки:

@echo off
set "Effective="
for /F "tokens=2 delims=%%) " %%I in ('%SystemRoot%\System32\find.exe /I "Effective" file.cfg') do set "Effective=%%I"
if defined Effective echo The effective value is: %Effective%

Это решение требует, чтобы строка в двойных кавычках не содержала пробел и не было пробела слева от пробела слева отзначение интереса.

Другое решение будет следующим:

@echo off
set "Effective="
for /F "tokens=2 delims=%%)," %%I in ('%SystemRoot%\System32\find.exe /I "Effective" file.cfg') do for /F %%J in ("%%I") do set "Effective=%%J"
if defined Effective echo The effective value is: %Effective%

Это решение работает также для строк без пробела и строк с одним или несколькими пробелами в любом месте, оставленном числоминтерес.Но строка в кавычках не должна содержать запятую.

Третье решение будет также работать с несколькими пробелами и запятыми, оставленными до интересующего числа.

@echo off
set "Effective="
for /F tokens^=3^ delims^=^" %%I in ('%SystemRoot%\System32\find.exe /I "Effective" file.cfg') do for /F "delims=%%), " %%J in ("%%I") do set "Effective=%%J"
if defined Effective echo The effective value is: %Effective%
0 голосов
/ 20 апреля 2019

получить правильные токены и разделители (не волнует %, оно теряется при разборе )

@echo off
set "string=Effective("flyer", 100%);"
for /f "tokens=2 delims=) " %%a in ("%string%") do set "number=%%a"
set number
...