我可以将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结果保存在变量中吗?的主要内容,如果未能解决你的问题,请参考以下文章

我可以将页数从 mPDF 保存到后端的变量中吗? [复制]

如何将多个 findstr 结果分配给单独的变量

我可以将一个字段的查询结果存储到不同的变量中吗?如果没有,那我该怎么办?

邮递员:我可以将 JSON 对象保存到环境变量中,以便将其链接到另一个请求中吗?

我可以将 NetLogo 中的图片保存到 Excel 文件中吗?

matplotlib 可以将元数据添加到保存的图形中吗?