批处理脚本将数据库名称变为变量

时间:2015-05-11 03:32:56

标签: batch-file

我运行了我的脚本以将数据库名称变为变量以检查某些条件。但是当我运行脚本并测试回显变量时,它不起作用。请看我的编码:

%mysql% -u%dbuser% -p%dbpass% -s -N -e "SHOW DATABASES" | FOR /F "usebackq" %%D IN (`findstr /V "information_schema performance_schema mysql test"`) DO SET dbname=%%D echo %dbname%

结果是:

SET dbname=mydatabasename echo

我在脚本标题上放了一个命令SETLOCAL,但没有运气。

@echo off

SETLOCAL ENABLEDELAYEDEXPANSION

任何人都可以帮助我获得正确的命令吗?

1 个答案:

答案 0 :(得分:0)

您不能像编写它们那样在同一行上拥有两个单独的命令。您有两种选择:

选项1:使用括号创建代码块

setlocal enabledelayedexpansion
for /f "usebackq" %%d in (`findstr /V "information_schema performance_schema mysql test"`) do (
    set dbname=%%d
    echo !dbname!
)

请注意,您需要启用延迟扩展并使用!而不是%来调用在代码块中设置的变量。

选项2:使用&加入这两个命令。

for /f "usebackq" %%d in (`findstr /V "information_schema performance_schema mysql test"`) do set dbname=%%d&echo %dbname%