我有这个批处理文件。
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
SET String=Ab,cd,Efgh
SET Length=0
FOR /L %%A IN (0,1,8100) DO (
IF NOT "!String:~%%A,1!"=="" (SET /A Length = %%A + 1)
FOR /F "tokens=%Length% delims=, " %%G in ("%String%") do (echo %%G)
)
ENDLOCAL
我想提取由
,
分隔的单个字符串,例如Ab cd Efgh
,但是不起作用。
主要问题在于逻辑不必要的复杂性。例如,FOR /L %%A IN (0,1,8100) 循环在相当大的范围内迭代。将字符串拆分为多个部分确实不需要它。此外,使用 tokens=%Length% 无法按预期工作,因为 Batch 无法动态计算 FOR /F 循环。
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
SET String=Ab,cd,Efgh
REM Loop through each part of the string separated by commas
FOR %%A IN (%String%) DO (
echo %%A
)
该解决方案根据逗号分割字符串并输出每个部分。