对于批处理文件中的数组循环
For loop over array in batch file
我需要一些帮助。
此代码
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
有结果 if echo %%a
sample
sample_test
test_sample
但是当我添加 echo %a% 时,在使用该代码的 for 循环之后
结果只有
test_sample
怎么可能我仍然可以在 echo %%a
上获得相同的输出
你需要一个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%
这样就可以了:
@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!
我需要一些帮助。 此代码
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
有结果 if echo %%a
sample
sample_test
test_sample
但是当我添加 echo %a% 时,在使用该代码的 for 循环之后 结果只有
test_sample
怎么可能我仍然可以在 echo %%a
上获得相同的输出你需要一个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%
这样就可以了:
@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!