Batch file 批处理脚本将数据库名称放入变量
我已经运行了脚本,将数据库名称放入变量中,以检查一些条件。但是当我运行脚本并从变量中测试echo时,它不起作用。请看我的代码:Batch file 批处理脚本将数据库名称放入变量,batch-file,Batch File,我已经运行了脚本,将数据库名称放入变量中,以检查一些条件。但是当我运行脚本并从变量中测试echo时,它不起作用。请看我的代码: %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% 结果是:
%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:使用括号创建代码块
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%