我运行了我的脚本以将数据库名称变为变量以检查某些条件。但是当我运行脚本并测试回显变量时,它不起作用。请看我的编码:
%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
任何人都可以帮助我获得正确的命令吗?
答案 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%