批处理脚本 - 由两个或多个空格分隔

时间:2018-02-20 08:46:40

标签: string batch-file split delimiter

我有一个大字符串,看起来像这样

aa bb c d  f eeeee    ffff

我不确定字符串会带来多少空格。下一次,字符串在aa和bb之间可能有五个空格,所以......

aa     bb     c      f       eee ff

有没有办法可以在批处理脚本中使用delim在两个或多个空格(可变数量的空格)上拆分?我总是想要第二个令牌,无论第一个和第二个令牌之间有多少空格。

PS:编辑 我想要第二个令牌(通过令牌我的意思是在分割恰好两个或更多个空格后获得的令牌)。我的令牌本身可以包含一个空格。示例:a b c d。 在此想要提取b。 另一个例子:a b b c d。 在这里我想提取b b。

2 个答案:

答案 0 :(得分:1)

(收集各种评论:标记由两个或多个空格分隔;您需要第二个标记;每个标记可能有也可能没有单个空格)

我评论了每一步,并添加了echo来显示进度。

@echo off
setlocal 
set "string=ads ads      d b c    dsad   ds   ads"
echo 1: "%string%"
REM remove first token (delimited by ecactly two spaces):
set "string=%string:*  =%"
echo 2: "%string%"
REM remove leading spaces:
for /f "tokens=*" %%a in ("%string%") do set "string=%%a"
echo 3: "%string%"
REM remove third and next tokens (delimited by two or more spaces)
set string=%string:  =&REM %
echo 4: "%string%"

只有更改为我之前问题的答案才能删除前导空格for

答案 1 :(得分:0)

未来读者的通知:

在 OP添加重要文本I always want the second token no matter how any spaces are there between first and second tokens.

之前,已发布此答案

请在投票/评论前阅读原始问题

没有

delims表示令牌由any sequence of any of the defined delimiter characters分隔。

因此,您的示例字符串将被处理为7个单独的标记。

如果您告诉我们您尝试做什么,可能会有所帮助。采取的方法通常取决于期望的结果。

这可能与您尚未回复的https://stackoverflow.com/a/48808982/2128947相关联。