Установка строкового значения для переменной - PullRequest
0 голосов
/ 15 февраля 2019

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

findstr /is "CouId:" C:\dev\AssayInfo.txt
set number=findstr /is "CouId:" C:\dev\AssayInfo.txt
echo %number% 
pause

Вот как выглядит файл, который я использую findstr:

Protocol: NVD_RCP_Fluidic_Accuracy_v0.4
ProtocolVersion: 1
SampleId: FLQC+20191126+00111280+96
InstrumentId: 123456789001
CouId: 138527011
CouSlot: 1

В этом случае переменная должна иметь значение 138527011.

Ответы [ 2 ]

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

Лично я бы использовал:

@echo off

for /F "tokens=2" %%A IN ('findstr /ibc:"CouId: " C:\dev\AssayInfo.txt') do set "num=%%A"

rem Do some code here:

pause
exit /b 0

, что намного короче.

Обратите внимание, что прямые сравнения могут выполняться непосредственно внутри цикла for, например:

@echo off
setlocal EnableDelayedExpansion

for /F "tokens=2" %%A IN ('findstr /ibc:"CouId: " C:\dev\AssayInfo.txt') do (
    set "num=%%A"
    rem Do sum comparisons with '!num!', not '%num%'!:
)
pause
exit /b %errorlevel%
0 голосов
/ 15 февраля 2019

Вот, пожалуйста:

@echo off
for /f "tokens=1,* delims=: " %%i in ('type "C:\dev\AssayInfo.txt" ^| findstr /i CouID') do set "number=%%j"
echo %number%
:# Here you can add your if statements etc.
pause

Обратите внимание, что это именно то, что вам нужно, в соответствии с этим вопросом, а не другим вопросом, и поэтому это все, что я могу дать вам сейчас.

Однако, это даже не нужно, вы можете сделать это без переменной set:

@echo off
for /f "tokens=1,* delims=: " %%i in ('type "C:\dev\AssayInfo.txt" ^| findstr /i CouID') do (
   echo %%i
   :# Here you can add your if statements etc.
)
pause
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...