在batch file中,我如何循环string中的空格?

batch file中,我如何循环string中的空格?

例如,我有:

for %%P in (Test 1,Test 2,Test 3) do ( echo %%P ) 

我得到的输出是

 Test 1 Test 2 Test 3 

而不是我所希望的输出:

 Test 1 Test 2 Test 3 

如果我添加引号我得到

 "Test 1" "Test 2" "Test 3" 

我也不想要 有任何想法吗?

for /? 有你的答案。

 %~I - expands %I removing any surrounding quotes (") 

所以你可以像这样实现它:

 FOR %%P IN ("Test 1","Test 2","Test 3") DO (echo %%~P) 

韦尔森拉尔森打败了我,但这里有其他的方法来拆分字符串,而不需要单独的引号;


假设只有3个字符串要拆分;

 for /f "tokens=1,2,3 delims=," %%G in ("Test 1,Test 2,Test 3") do ( echo %%~G echo %%~H echo %%~I ) 

或者我最喜欢的;

 set "string=Test 1,Test 2,Test 3" set "chVar=%string%" :reIter for /f "tokens=1* delims=," %%G in ("%chVar%") do (echo %%G & set "chVar=%%H") if defined chVar (goto :reIter) 

而一个奇怪的,但可选的;

 set "string=Test 1,Test 2,Test 3" set string=%string: =_% for %%G in (%string%) do call :replace "%%~G" pause exit :replace set "chVar=%~1" echo %chVar:_= % goto :eof