我需要将变量设置为从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
。
答案 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%