Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 在多个目录中运行所有SQL文件_Sql Server_Batch File_Cmd_Sql Server 2012_Sqlcmd - Fatal编程技术网

Sql server 在多个目录中运行所有SQL文件

Sql server 在多个目录中运行所有SQL文件,sql-server,batch-file,cmd,sql-server-2012,sqlcmd,Sql Server,Batch File,Cmd,Sql Server 2012,Sqlcmd,我结合了我在网上找到的几个解决方案,试图实现这一点 我正在尝试运行一个.cmd脚本(Script1.cmd),其中包含.sql文件的文件夹位置。该脚本运行另一个脚本(Script2.cmd),以使用sqlcmd执行该文件夹位置中的所有.sql文件。它基本上是有效的,但它会打开一个命令窗口,我必须为每个文件夹位置退出该窗口 Script1.cmd start Script2.cmd "C:\Location1" start Script2.cmd "C:\Location2" Script2

我结合了我在网上找到的几个解决方案,试图实现这一点

我正在尝试运行一个.cmd脚本(Script1.cmd),其中包含.sql文件的文件夹位置。该脚本运行另一个脚本(Script2.cmd),以使用sqlcmd执行该文件夹位置中的所有.sql文件。它基本上是有效的,但它会打开一个命令窗口,我必须为每个文件夹位置退出该窗口

Script1.cmd

start Script2.cmd "C:\Location1"
start Script2.cmd "C:\Location2"
Script2.cmd

@Echo Off
FOR /f %%i IN ('DIR %1\*.Sql /B') do call :RunScript %1 %%i
GOTO :END

:RunScript
Echo Executing Script: %2
cd %1
SQLCMD -S Server123 -d Database456 -E -i %2
Echo Completed Script: %2

:END

for或for的官方命令行参考似乎过于简短。阅读:

语法:
START“title”[/D path][options]“command”[parameters]

始终包含
标题
这可以是一个简单的字符串,如
“我的脚本”
或 只有一对空引号。根据微软公司的说法 文档中,标题是可选的,但取决于其他 选择的选项如果省略,可能会出现问题

如果命令是内部cmd命令或批处理文件,则 处理器通过
/K
开关运行到
cmd.exe
这意味着 运行命令后,窗口将保留

下一步
Script1.cmd
应工作并关闭已启动的命令窗口:

start "" cmd /C Script2.cmd "C:\Location1"
start "" cmd /C Script2.cmd "C:\Location2"

您真的希望两个
Script2.cmd
命令行同时运行吗?@aschipfl我可以从Scrip1中串行运行它们吗?是:要逐个运行,只需使用
调用Script2.cmd*
。。。如果您希望每次运行都打开一个新窗口,您还可以使用
start”“/WAIT cmd/C Script2.cmd*
,非常酷!非常感谢!