是否可以使用批处理文件按字母顺序执行文件夹中的所有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"
)
答案 0 :(得分:0)
如果使用/F
命令的FOR
选项,则可以使用另一个命令生成要迭代的数据集。
使用此FOR
声明,相信您会找到您正在寻找的结果。
FOR /F "usebackq" %%G IN (`dir /ON /B *.sql *.up`) DO ...
这使用dir
命令生成要使用的文件集。 /ON
参数按名称对文件进行排序,/B
参数提供文件名的裸格式(无标题信息或摘要)。
有关参数的更多详细信息,请检查命令行dir /?
和for /?