我可以将Findstr结果保存在变量中吗?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我可以将Findstr结果保存在变量中吗?相关的知识,希望对你有一定的参考价值。
我有这个CSV:
The;Quick;Brown;Fox
我知道如何获取字符串:
findstr /v "*" brownfox.csv
但是,如何在不使用For循环的情况下在变量中保护此字符串。
我想在这里处理字符串以获取令牌计数%i%
set var1=(the string from brownfox.csv)
set var2=%var1%
set i=0
:loopprocess
for /F "tokens=1* delims=;" %%A in ( "%var1%" ) do (
set /A i+=1
set var1=%%B
goto loopprocess )
echo The string contains %i% tokens.
我只需要在变量中使用CSV中的全文。
答案
我不确定为什么你不能使用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"
)
另一答案
<brownfox.csv set /p "line="
FOR %%G IN (%line%) DO set /a count+=1
echo The string contains %count% tokens.
获取文件(第一行)的第一行,第二行计算令牌,第三行将其写入屏幕。
另一答案
只为您提供另一种选择。这会将字符串拆分为伪变量数组,并且还会计算数组中变量的数量。
@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.
以上是关于我可以将Findstr结果保存在变量中吗?的主要内容,如果未能解决你的问题,请参考以下文章
我可以将一个字段的查询结果存储到不同的变量中吗?如果没有,那我该怎么办?
邮递员:我可以将 JSON 对象保存到环境变量中,以便将其链接到另一个请求中吗?