Arrays 在Windows批处理中拆分长度可变的字符串

Arrays 在Windows批处理中拆分长度可变的字符串,arrays,string,batch-file,Arrays,String,Batch File,我实际上在做一个编目器/解密器。现在我必须将数字组与其他组分开。数字组的长度未知,但我知道它们被“”除以(空格字符)。我不知道如何继续,但我可以用伪代码解释我的意愿: for x-times (maybe the maximum, like 128) ( group[index] = the first part of the string until " " string = string minus the first part until " " ) 基本上,我想提取单个数组中的组。这可

我实际上在做一个编目器/解密器。现在我必须将数字组与其他组分开。数字组的长度未知,但我知道它们被“”除以(空格字符)。我不知道如何继续,但我可以用伪代码解释我的意愿:

for x-times (maybe the maximum, like 128) (
group[index] = the first part of the string until " "
string = string minus the first part until " "
)
基本上,我想提取单个数组中的组。这可能吗?
我用定义的令牌尝试了很多方法,但我的系统完全不同。

正如Mofi已经指出的,一个简单的
for
就可以了。添加一个计数器,为每个“字”(数组)建立一个变量。它们是实词还是数字并不重要,但是一些特殊的字符会产生错误,比如
&
|
,或者只是被忽略,比如
%


使用搜索词查看此堆栈溢出。正如你所看到的,这不是第一次被问到。对于以空格作为分隔符的字符串,您只需要命令即可。在命令提示窗口中运行/?
以获取此命令的帮助。请使用PowerShell,而不是尝试在shell脚本(批处理)中执行此操作。PowerShell具有带子字符串的本机字符串支持、对数组和结构化语言循环语句的内置支持。抱歉,1)我的系统不同2)您发布的可能解决方案不起作用3)我使用的是批处理而不是PowerShell。无需与shell脚本(批处理)斗争现在我们有了PowerShell。非常感谢Stephan
@echo off
setlocal enabledelayedexpansion
set count=0
set "string=some substrings with variable lengths separated by space"
for %%a in (%string%) do (
  set /a count+=1
  set substring[!count!]=%%a
)
set substring[