2015-02-12 2 views
1

Мне нужна помощь. Этот кодЗа цикл над массивом в пакетном файле

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 

имеет результат, если эхо %% в

sample 
sample_test 
test_sample 

, но после того, как цикл с этим кодом, когда я добавить эхо% в% результат только

test_sample 

как могло случиться так, что я все еще могу получить тот же результат на эхо %%

+0

Таким образом, из [предыдущий вопрос] (http://stackoverflow.com/a/28405749/2861476), который объединяет имена баз данных в переменной, если я понимаю вас, вам нужно сохранить прямую линию между именами. Это правильно? –

ответ

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! 
+0

спасибо, сэр. оно работает :) – xXxrk04

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% 
+0

Я уже сделал это сэр. я хочу, когда я добавляю еще один код ** echo! a! ** вне цикла for. выход только ** test_sample **, где я хочу отобразить ** образец sample_test test_sample ** такой же как! a! в цикле for. – xXxrk04

+0

@ xXxrk04 - так вы хотите добавить результат в% a%? – npocmaka

+0

результат **! A! ** есть ** образец sample_test test_sample ** и результат **% a% ** только ** test_sample ** .. я хочу **% a% ** имеет тот же результат с **! a! ** – xXxrk04

Смежные вопросы