如何使用FOR命令解析含空格的逗号分隔列表
批处理解析带空格的逗号分隔列表
原命令FOR "delims=," %%Q IN (%X%) DO ECHO '%%Q'失效的原因是:批处理默认的FOR命令会把空格、制表符等当成分隔符,%X%展开后会被拆分成多个以空格分割的小项,再用逗号分割就完全偏离需求了。
以下是两种可行的解决方法:
方法一:通用方案(支持任意数量的列表项)
通过将逗号替换为换行符,再用FOR /F逐行读取内容:
@echo off setlocal enabledelayedexpansion set "X=My Town,Four square,a b c d" :: 替换逗号为换行符,注意^后必须直接换行,不能加空格 set "split_list=!X:,=^ !" for /f "delims=" %%q in ("!split_list!") do echo %%q endlocal
执行后会输出:
My Town Four square a b c d
方法二:固定项数专用方案
如果确定列表项数固定(比如本例的3项),可以直接指定tokens分割:
@echo off set "X=My Town,Four square,a b c d" for /f "delims=" %%a in ("%X%") do ( for /f "tokens=1-3 delims=," %%q in ("%%a") do ( echo %%q echo %%r echo %%s ) )
内容的提问来源于stack exchange,提问作者D a
相关产品推荐
相关产品推荐

