如何使用批处理文件按字母顺序执行SQL脚本

时间:2013-10-04 20:42:49

标签: sql sql-server batch-file

是否可以使用批处理文件按字母顺序执行文件夹中的所有SQL脚本?

目前我使用以下代码,但它按照保存顺序执行脚本,而不是按字母顺序执行

SET Database=<<DatabaseName>>
SET ScriptsPath=<<FolderPath>>
SET ServerName=<<ServerName>>


IF EXIST "%ScriptsPath%output_CCF.txt" del "%ScriptsPath%output_CCF.txt"

type NUL > "%ScriptsPath%output_CCF.txt"

FOR /R "%ScriptsPath%" %%G IN (*.sql *.up) DO (

sqlcmd -d %Database% -S %ServerName% -i "%%G" -o "%%G.txt"

echo .................................................
 >> "%ScriptsPath%output_CCF.txt"

echo Executing: "%%G" >> "%ScriptsPath%output_CCF.txt"

echo ...................................>> "%ScriptsPath%output_CCF.txt"

copy "%ScriptsPath%output_CCF.txt"+"%%G.txt" "%ScriptsPath%output_CCF.txt"
del "%%G.txt"

)

1 个答案:

答案 0 :(得分:0)

如果使用/F命令的FOR选项,则可以使用另一个命令生成要迭代的数据集。

使用此FOR声明,相信您会找到您正在寻找的结果。

FOR /F "usebackq" %%G IN (`dir /ON /B *.sql *.up`) DO  ...

这使用dir命令生成要使用的文件集。 /ON参数按名称对文件进行排序,/B参数提供文件名的裸格式(无标题信息或摘要)。

有关参数的更多详细信息,请检查命令行dir /?for /?

中任一命令的帮助