2014-04-17 134 views
1

文件夾中有一些腳本文件必須在SQL Server數據庫上執行。不是文件夾中的所有文件,只是一個子集。以下命令位於批處理文件中,並且正在運行,但文件全部位於同一行。這是非常難以閱讀(有比文件中顯示的3更多的文件)。有沒有一種方法可以在各行上列出文件(爲了便於閱讀)並且不會丟失功能?目標是僅使用批處理文件執行此任務 - 而不是批處理文件+使用:r命令執行每個腳本的SQL文件。用於執行SQL腳本的批處理文件 - 無回車

sqlcmd -S ServerInstance -E -d DatabaseName -i .\Tables\stage.products.sql, .\Tables\dbo.products.sql, .\Sprocs\dbo.BuildProducts.sql 
+0

請問這有幫助嗎? http://stackoverflow.com/questions/2583517/run-all-sql-files-in-a-directory – cdev

+0

該鏈接似乎執行以.sql結尾的所有文件。我必須明確聲明文件名,以便它不會運行文件夾中以.sql結尾的所有文件。 – knot22

回答

1
@echo off 
setlocal EnableDelayedExpansion 

set "sqls=" 
for %%a in (
      .\Tables\stage.products.sql 
      .\Tables\dbo.products.sql 
      .\Sprocs\dbo.BuildProducts.sql 
      ) do set "sqls=!sqls!, %%a" 

sqlcmd -S ServerInstance -E -d DatabaseName -i %sqls:~1% 

上一頁批處理文件,您可以按照您的要求列出個別行文件的可讀性。它不允許包含比原本可包含在一行中的文件更多的文件。

2

如果它是一個批處理文件,你可以添加一個^到每一行的末尾: echo Line 1^ and line 2^ and line 3 will all echo in a single line.

當你運行上面的批處理文件的結果是:1

線和第2行和第3行都將在一行中回顯。

+0

+1,但要小心。可以在命令行上顯示的字符總數有限制。所有使用續行的行將被視爲一行。對於Windows Vista和超出限制是8191個字符。 – dbenham

相關問題