我有一个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
答案 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 )
语句。