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脚本的批处理脚本_Sql_Batch File - Fatal编程技术网

用于在目录中执行.sql脚本的批处理脚本

用于在目录中执行.sql脚本的批处理脚本,sql,batch-file,Sql,Batch File,我们有一个目录,其中包含一个接一个地执行的.sql脚本,具体取决于编号:例如文件名为1.abc.sql、2.ter.sql、3.wty.sql等等 我想开发一个批处理脚本,它将驻留在sql脚本目录中,并要求执行脚本编号,输入类似“'1'或'2'或'3'或'10'”。根据收到的输入,脚本执行应从该编号的脚本开始,直到目录中.sql脚本的结尾 例如,如果接收到“1”作为输入,则脚本执行应从1.abc.sql开始,如果接收到“2”,则脚本执行应从2.ter.sql开始,直到目录中所有脚本的结尾,并将每

我们有一个目录,其中包含一个接一个地执行的.sql脚本,具体取决于编号:例如文件名为1.abc.sql、2.ter.sql、3.wty.sql等等

我想开发一个批处理脚本,它将驻留在sql脚本目录中,并要求执行脚本编号,输入类似“'1'或'2'或'3'或'10'”。根据收到的输入,脚本执行应从该编号的脚本开始,直到目录中.sql脚本的结尾

例如,如果接收到“1”作为输入,则脚本执行应从1.abc.sql开始,如果接收到“2”,则脚本执行应从2.ter.sql开始,直到目录中所有脚本的结尾,并将每个脚本的日志记录到文件名_sqloutput.txt

条件是:如果任何脚本给出任何错误消息,如列名不正确或表名不正确等,则脚本执行应立即停止,不应执行其他脚本

我尝试使用以下代码:

需要你的帮助

@echo off
SETLOCAL EnableExtensions EnableDelayedExpansion
for /f %%a IN ('dir /b *.sql') do (
call sqlcmd -S AMRVSP000000318 -i %%a  -o"%%~na_sqloutput.txt" 

findstr "Msg" "%%~na_sqloutput.txt" 2>NUL
if !errorlevel! EQU 0 (
    echo Error occured in script %%a

echo Please check the %%~na_sqloutput.txt for detailed error logs 
    pause
    exit /B
) else (
    echo Successfully executed script %%a
) 
)
pause

使用
SET/P
命令获取用户输入。是否所有脚本名称都以数字开头,然后是句点?基本上是验证它们是否以相同的格式一致命名。数字之间是否存在差距?4.abc.sql,然后是6.xyz.sql。会有丢失的号码吗?不会有任何丢失的号码。它将从1编号到目录中最后一个编号的脚本