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
Batch file 执行不同文件夹的方式';从一个位置使用一个bat文件的脚本_Batch File_Sql Server 2008 R2_Sqlcmd - Fatal编程技术网

Batch file 执行不同文件夹的方式';从一个位置使用一个bat文件的脚本

Batch file 执行不同文件夹的方式';从一个位置使用一个bat文件的脚本,batch-file,sql-server-2008-r2,sqlcmd,Batch File,Sql Server 2008 R2,Sqlcmd,我必须在sql server 2008r2上执行大量脚本。这些脚本存在于许多文件夹和子文件夹中。我创建了一个批处理文件来执行这些脚本,但我的问题是我必须将此bat文件放在一个文件夹中以执行相关文件夹的脚本。因此,如果有超过10个文件夹,那么我必须将此bat文件放在一个文件夹中10次。是否有任何方法可以将我的bat文件放在任何我想要的地方(如桌面上)并执行该文件夹的文件 .bat文件:- for %%G in (*.sql) do sqlcmd /S %1 /d %2 -E -i"%%G" p

我必须在sql server 2008r2上执行大量脚本。这些脚本存在于许多文件夹和子文件夹中。我创建了一个批处理文件来执行这些脚本,但我的问题是我必须将此bat文件放在一个文件夹中以执行相关文件夹的脚本。因此,如果有超过10个文件夹,那么我必须将此bat文件放在一个文件夹中10次。是否有任何方法可以将我的bat文件放在任何我想要的地方(如桌面上)并执行该文件夹的文件

.bat文件:-

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

使用命令提示符传递服务器名称和数据库名称。

/R
选项添加到
FOR
以递归搜索:

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

它将在当前目录(
)下的任何位置搜索*.sql文件。或者,如果您希望将特定文件夹作为根目录,请将其设置为(*.sql)中的/R C:\Folder%%G的

假设您希望使用相同的服务器名和数据库名从多个目录执行BAtasposted

@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=子句


当然,您的BatchAsPosted.bat应该位于%path%变量中提到的任何目录中…

这些文件夹是更改的还是不变的?