2014-04-17 84 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

相关问题