我有这个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中的全文。
答案 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.