从存储在变量中的字符串中获取元素数量,其中之间有分隔符

问题描述 投票:0回答:1

我想从存储在变量中的字符串中获取元素的数量,变量之间有分隔符。 注意:我有 mystring 变量,它具有特定的格式,我需要保持原样。

@echo off
setlocal enabledelayedexpansion

REM This is what I try to make working :

set mystring=0510150^\^|0510298^\^|051072803^\^|0510966
for /f "tokens=* delims=|" %%a in ("%mystring%") do (set /A nbfields=%nbfields%+1)
echo The number of elements is : %nbfields%

REM The following is a simplified version I used for debugging but it doesn't work too :

set mystring=0510150A0510298A051072803A0510966
for /f "tokens=1 delims=A" %%a in %mystring% do (set /A nbfields=%nbfields%+1)
echo The number of elements is : %nbfields%

我想在少于 5 个 Windows 批处理行中完成此计数,或者使用 Windows 批处理文件中的单行 powershell 调用。

我必须在 Windows 批处理文件中运行此“计数”,但如果需要,它可以包含 1 或 2 行 powershell 调用。

我在这个网站上找到了几个使用cmd的示例,但我无法使它们适应我的问题...

powershell batch-file
1个回答
0
投票

此技术来自 DosTips.com

上的一个帖子
@echo off
setlocal EnableDelayedExpansion
set "mystring=0510150^\^|0510298^\^|051072803^\^|0510966"
set i=1
set "mystring!i!=%mystring:|=" & set /A i+=1 & set "mystring!i!=%"
echo Fields=%i%
© www.soinside.com 2019 - 2024. All rights reserved.