作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要一些帮助。我想获取MySQL中的数据库名称并将其作为目录名称。但我的代码不正确。它失败了。
e.g
DATABASE NAME
- sample
- sample_test
我想创建一个与数据库同名的目录。
我的代码是:
@echo off
SET path=C:\Users\neca\Desktop
cd C:\wamp\bin\mysql\mysql5.5.24\bin
SET UserName=root
SET UserPass=root
mysql -u%UserName% -r%UserPass% -N -B -e "SHOW DATABASES LIKE '%%sample%%'" |
FOR /F %%D IN ('C:\Windows\System32\findstr /V "information_schema performance_schema"') DO @echo %%D
IF exist %path%\%%D (echo %%D exist)
ELSE (mkdir %path%\%%D && echo %%D created)
我得到了这个结果:我添加了暂停命令来暂停终端,并且显示为
sample IF exist C:\Users\neca\Desktop\sample (echo sample exist)
ELSE (mkdir C:\Users\neca\Desktop\sample sample created)
Press any key to continue . . .
当我像这样测试它时,输出是正确的
@echo off
SET path=C:\Users\neca\Desktop
cd C:\wamp\bin\mysql\mysql5.5.24\bin
SET UserName=root
mysql -uroot -N -B -e "SHOW DATABASES LIKE '%%sample%%'"
pause
输出:
sample
sample_test
Press any key to continue . . .
最佳答案
在以下情况下:
mysql -uroot -N -B -e "SHOW DATABASES LIKE '%sample%'"
sample
sample_test
Press any key to continue . . .
这个批处理脚本应该可以工作:
@echo off
pushd C:\wamp\bin\mysql\mysql5.5.24\bin
SET "pathxxx=C:\Users\neca\Desktop"
SET "UserName=root"
for /F "usebackq tokens=*" %%G in (
`mysql -uroot -N -B -e "SHOW DATABASES LIKE '%%sample%%'"`
) do (
echo processing "%%G"
IF exist "%pathxxx%\%%~G" (
echo %%G exist
) ELSE (
echo mkdir "%pathxxx%\%%~G"
echo %%G created
)
)
popd
注释:
path
,即使是暂时也不要更改;使用另一个变量名称,此处 pathxxx
;pushd
.. popd
对代替 chdir
命令:popd
会将目录更改回路径/最近由 pushd
命令存储的文件夹;usebackq
强制在 for/F
命令中使用备用引用样式;很重要,因为您的命令包含 '
单引号;%%~G
与 ~
argument modifier 一起使用。删除周围的引号 ("
)(如果有);echo mkdir "%pathxxx%\%%~G"
仅用于调试目的(调试时去掉 echo
字样。关于mysql - BATCH : FOR LOOP with IF ELSE , mysql和目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28427395/
我是一名优秀的程序员,十分优秀!