0

是否可以使用批处理文件按字母顺序执行文件夹中的所有 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"

)
4

1 回答 1

0

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

使用此FOR语句,我相信您会找到您正在寻找的结果。

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

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

有关参数的更多详细信息,请查看命令行中任一命令的帮助dir /?for /?

于 2013-10-04T21:07:13.790 回答