批处理文件 - 指定执行sql文件的顺序

时间:2012-02-23 08:19:07

标签: batch-file

我有一个bat文件,它执行一个sql文件列表。我通常将它们按顺序排列,但在某些机器上,订单会改变,例如默认是按修改日期等顺序排序。是否可以按以下顺序运行此bat文件:首先运行带有1.前缀的项目然后2.然后是3.依此类推?

@echo on
set server=.\Dev05
set catalog=MyDb
set user=sa
set password=myPassword

echo ----------------ERROR LOG---------------- > ErrorLog.txt
echo . >> ErrorLog.txt

FOR %%f IN (*.sql) DO (
echo --------%%f Output-------- >> ErrorLog.txt 
SQLCMD -S%server% -d%catalog% -U%user% -P%password% -I -i "%%f" >> ErrorLog.txt
echo . >> ErrorLog.txt 
)

pause

2 个答案:

答案 0 :(得分:0)

我原以为FOR应该已经有效,但是如果你想强行执行订单,我认为这应该有效:

FOR /F %%f IN ('dir /B /O:N *.sql') DO (

您要求dir命令按名称顺序对文件名进行排序。

答案 1 :(得分:0)

也许是这样的:

@echo OFF

:: Count number of SQL files to set upper limit on outer loop:
@for /f "tokens=*" %%f in ('dir /A-d /b *.sql') do @set /a count+=1 > NUL

for /l %%i in (1,1,%count%) do (
    if exist %%i.*.sql (
        for %%f in ( %%i.*.sql) do (
            @echo Process file %%f
            . . .
        )
    ) else (
        exit /b
    )
)

如果序列中存在空白,请删除else ( exit /b )语句。