将字符串值设置为变量

时间:2019-02-15 14:30:41

标签: batch-file

我需要将变量设置为从find命令获得的子字符串,但它会返回命令

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 :(得分:2)

您在这里:

@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

答案 1 :(得分:0)

我个人会使用:

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