执行批处理脚本后的命令窗口未在执行后停止

时间:2019-12-20 12:57:57

标签: windows batch-file

我在.bat文件中具有以下脚本:

@echo off

setlocal enableextensions enabledelayedexpansion

for /f %%a in ('sqlcmd -S RCOVSVR3742 -d FRK -E -Q "SET NOCOUNT ON;SELECT count(*) FROM [FRK].[dbo].[interface_log] where interfaceid = '1F88027F-44A0-4089-B6C2-129E9206E478' and cast(idata_stamp as date) = dateadd(dd,-2,cast(getdate() as date))
and idata is not null"')
do set ColumnVar=%%a

echo %ColumnVar%

pause

当我通过批处理脚本运行以上代码时,命令窗口不会停止。

已尝试的选项:

  1. 我尝试用cmd / k替换pause,但仍然不起作用
  2. 我尝试用pause> nul代替pause,但是它没有用。

我正在脚本中提到的服务器上运行脚本。

有人可以帮助我实现这一目标吗?

3 个答案:

答案 0 :(得分:1)

作为我的评论的补充,我相信您提供的代码应该是这样的:

@Echo Off
For /F %%a In (
    'sqlcmd.exe -S RCOVSVR3742 -d FRK -E -Q "SET NOCOUNT ON;SELECT count(*) FROM [FRK].[dbo].[interface_log] where interfaceid = '1F88027F-44A0-4089-B6C2-129E9206E478' and cast(idata_stamp as date) = dateadd(dd,-2,cast(getdate() as date)) and idata is not null"'
) Do Set "ColumnVar=%%a"
Echo(%ColumnVar%
Pause

请首先尝试上述操作,以确保换行符,基本批处理文件语法或批处理文件的名称不是问题。

我怀疑您可能已将脚本命名为sqlcmd.batsqlcmd.cmd。如果有,上面的代码将解决您的问题。尽管我仍然建议您也将其重命名为还不是可执行文件名的文件。

答案 1 :(得分:0)

尝试在批处理文件的末尾添加exit命令。

答案 2 :(得分:0)

您可以删除以下行:

setlocal enabledelayedexpansion enableextensions

并在末尾添加:

exit /b An error code-Optional