我可以将Findstr结果保存在变量中吗?

时间:2018-02-28 12:25:53

标签: batch-file

我有这个CSV:

gst-launch-0.10 playbin2 uri=file:///mnt/hash.mp4 video-sink="imxv4l2sink" flags=0x51

我知道如何获取字符串:

The;Quick;Brown;Fox

但是如何在不使用For循环的情况下在变量中保护此字符串。

我想在此处理字符串以获取令牌计数%i%

findstr /v "*" brownfox.csv

我只需要在变量中使用CSV中的全文。

3 个答案:

答案 0 :(得分:3)

我不确定为什么你不能使用for,但如果绝对不能使用它,你需要一个临时文件:

>%TEMP%\foo.tmp findstr /v "*" brownfox.csv
<%TEMP%\foo.tmp set /p "var1="

但是,根据您的描述,您根本不需要变量。 无论如何都要使用for循环。为什么不简单地做

for /f "tokens=1* delims=;" %%A in ('findstr /v "*" brownfox.csv') do (
  set /a i+=1
  set "var1=%%B"
)

答案 1 :(得分:0)

<brownfox.csv set /p "line="
FOR %%G IN (%line%) DO set /a count+=1
echo The string contains %count% tokens.

获取文件(第一行)的第一行,第二行计算令牌,第三行将其写入屏幕。

答案 2 :(得分:0)

另外一个选择。这会将字符串拆分为伪变量数组,并且还会计算数组中变量的数量。

@echo off
setlocal EnableDelayedExpansion

set i=1
set /p "x="<brownfox.csv
set "x!i!=%x:;=" & set /A i+=1 & set "x!i!=%"
set x
echo %i%
pause

This technique was discovered in this thread on DosTips.com.

相关问题