2013-03-09 48 views
1

我必須在sql server 2008r2上執行大量腳本。這些腳本存在於許多文件夾和子文件夾中。我創建了一個批處理文件來執行這些腳本,但是我的問題是我必須把這個蝙蝠文件放在一個文件夾中執行有關文件夾的腳本。所以,如果有超過10個文件夾,所以我必須把它放在一個文件夾中這個蝙蝠文件10次。是否有任何方式我可以把我的蝙蝠文件放在任何我想要的地方(如在桌面上)並執行文件夾的文件?從一個位置使用一個bat文件執行不同文件夾腳本的方法

.bat文件: -

for %%G in (*.sql) do sqlcmd /S %1 /d %2 -E -i"%%G" pause 

傳遞的服務器名稱,並使用命令提示符數據庫名。

+0

做這些文件夾改變或者是他們不變? – rud3y 2013-03-13 17:52:20

回答

1

/R選項添加到FOR遞歸搜索:

FOR /R . %%G IN (*.sql) DO ... etc ... 

,會爲* .sql文件低於當前目錄(.)的任何地方進行搜索。或者如果你想要一個特定的文件夾作爲根目錄,請將其設爲FOR /R C:\Folder %%G IN (*.sql) DO ...

1

假設你希望執行使用相同的服務器名和數據庫名稱的多個目錄yourbatasposted,

@ECHO OFF 
SETLOCAL 
FOR /f "delims=" %%i IN (folderlist.txt) DO (
PUSHD "%%i" 
CALL yourbatasposted %* 
POPD 
) 

其中folderlist.txt是包含目標目錄名,佔一行簡單的文本文件。

如果您要控制哪些服務器/數據庫/目錄單獨執行,然後創建controllist,格式爲行TXT

服務器名稱數據庫目錄

@ECHO OFF 
SETLOCAL 
FOR /f "tokens=1,2*delims=Q" %%i IN (controllist.txt) DO (
PUSHD "%%k" 
CALL yourbatasposted %%i %%j 
POPD 
) 

其中「Q」之間的分隔符controllist.txt中的列。如果您選擇使用空格,請忽略delims =子句。

當然,yourbatchasposted.bat應設在%PATH%變量所提到的任何目錄...

相關問題