我需要一些帮助。我想在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 . . .
答案 0 :(得分:1)
在下一种情况下:
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
; chdir
命令pushd
.. popd
对:popd
会将目录更改回pushd
最近存储的路径/文件夹命令; usebackq
强制for /F
命令中的备用引用样式;必不可少的,因为您的命令包含'
单引号; %%~G
与~
argument modifier一起删除周围的引号("
)(如果有的话); echo mkdir "%pathxxx%\%%~G"
仅用于调试目的(在调试时删除echo
字。