gpt4 book ai didi

mysql - BATCH : FOR LOOP with IF ELSE , mysql和目录

转载 作者:行者123 更新时间:2023-11-29 12:25:18 24 4
gpt4 key购买 nike

我需要一些帮助。我想获取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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com