sql与dos部署

发布于 2024-09-04 02:22:33 字数 255 浏览 7 评论 0原文

如何自定义下面的 FOR 命令以按照文件名中前缀的数字顺序循环访问数据库文件夹内的文件?

FOR /R ../Database %%f IN (*.sql) DO sqlcmd -S %1 -d %2 -U %4 -P %5 -i "%%~f" >>>日志/%2_DBInstall.log ||转到错误

数据库文件夹包含: 001_usp_procedure1.sql 002_ups_procedure2.sql

非常感谢,

How can I customize the the FOR command below to loop through the files inside the Database folder following the order of the number prefixed in the file name?

FOR /R ../Database %%f IN (*.sql) DO sqlcmd -S %1 -d %2 -U %4 -P %5 -i "%%~f" >> Logs/%2_DBInstall.log || goto errors

Database folder contains:
001_usp_procedure1.sql
002_ups_procedure2.sql

Thanks very much,

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

暗恋未遂 2024-09-11 02:22:34

请尝试以下操作

del temp.txt
del temp1.txt
for  /F "usebackq "  %%F IN (`dir /b /s /o:n "../Database/*.sql"`)  DO (
echo %%~nF  / %%F >> temp.txt
)
sort temp.text temp1.text
for /F "tokens=1,2 delims=/" %%i IN (temp1.txt) DO sqlcmd -S %1 -d %2 -U %4 -P %5 -i "%%j" >> Logs/%2_DBInstall.log || goto errors

它也应该适用于递归目录(进程按全局文件名排序,而不考虑路径......我理解问题吗?)
请注意,正在使用两个临时文件。小心名称(或使用真实的临时文件)

Please try the following

del temp.txt
del temp1.txt
for  /F "usebackq "  %%F IN (`dir /b /s /o:n "../Database/*.sql"`)  DO (
echo %%~nF  / %%F >> temp.txt
)
sort temp.text temp1.text
for /F "tokens=1,2 delims=/" %%i IN (temp1.txt) DO sqlcmd -S %1 -d %2 -U %4 -P %5 -i "%%j" >> Logs/%2_DBInstall.log || goto errors

It should work for recursive directories too (process is sorted by global filename without taking account of the path ... did I understand the problem?)
Please note that two temp files are being used. Be careful with the names (or use real temp files)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文