2010-06-03 76 views
1

如何自定义下面的FOR命令以循环遍历数据库文件夹中的文件,并按照文件名前缀中的数字顺序? >>日志/数据库%% f IN(* .sql)DO sqlcmd -S%1 -d%2 -U%4 -P%5 -i“%%〜f” %2_DBInstall.log ||转到错误sql部署与dos

数据库文件夹包含: 001_usp_procedure1.sql 002_ups_procedure2.sql

非常感谢,

+0

是否按预期顺序执行您的过程?通过006.sql运行对文件000.sql的快速测试对我来说按数字顺序运行。你有你想要以相同的数字顺序处理的子文件夹? – LittleBobbyTables 2010-06-03 16:50:48

+0

@LittleBobby FOR中的/ R开关表示递归,因此情况可能是 – 2010-06-04 01:38:43

回答

0

请尝试以下

del temp.txt 
del temp1.txt 
for /F "usebackq " %%F IN (`dir /b /s /o:n "../Database/*.sql"`) DO (
echo %%~nF/%%F >> temp.txt 
) 
sort temp.text temp1.text 
for /F "tokens=1,2 delims=/" %%i IN (temp1.txt) DO sqlcmd -S %1 -d %2 -U %4 -P %5 -i "%%j" >> Logs/%2_DBInstall.log || goto errors 

应该递归目录工作过(进程按照全局文件名排序,不考虑路径...我是否理解这个问题?) 请注意,两个临时文件是bein使用了。注意名称(或使用真实临时文件)

+0

Thanks million belisarius。这正是我需要的。 – Marcelo 2010-06-04 14:41:30