对于批处理文件中的循环数组

时间:2015-02-12 06:11:27

标签: arrays batch-file for-loop

我需要一些帮助。 这段代码

for /f "usebackq delims=" %%a in (`
    mysql -u%dbUser% -e "SHOW DATABASES LIKE '%%sample%%';" 
    ^| findstr /l /v /c:"Database" /c:"information_schema"
`) do set a=%%a
如果 echo %% a

会产生结果

 sample
 sample_test
 test_sample

但是当我添加 echo%a%时,使用该代码进行for循环 结果只是

 test_sample

怎么可能这样我仍然可以在 echo %% a

上获得相同的输出

2 个答案:

答案 0 :(得分:2)

您需要delayed expansion

setlocal enableDelayedExpansion
for /f "usebackq delims=" %%a in (`
    mysql -u%dbUser% -e "SHOW DATABASES LIKE '%%sample%%';" 
    ^| findstr /l /v /c:"Database" /c:"information_schema"
`) do (
 set "a=!a! %%a"
 echo !a!
)
echo %a%

答案 1 :(得分:1)

这就是诀窍:

@echo off
setlocal EnableDelayedExpansion

set LF=^
%empty line%
%empty line%

for /f "usebackq delims=" %%a in (`
    mysql -u%dbUser% -e "SHOW DATABASES LIKE '%%sample%%';" 
    ^| findstr /l /v /c:"Database" /c:"information_schema"
`) do set "a=!a!%%a!LF!"

echo !a!