【问题标题】:Command window through batch script is not stopping after execution通过批处理脚本的命令窗口在执行后没有停止
【发布时间】:2020-04-12 23:49:26
【问题描述】:

我在 .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 替换为 pause >nul,但没有成功。

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

谁能帮我实现这个目标?

【问题讨论】:

  • 您在寻找exit 命令吗?
  • 我们无法确定您的具体问题,因为您发布的代码无效。您能否确认您的问题中作为代码出现的内容与您的真实批处理文件内容完全一样,(包括新行和空行)。您还在该代码中启用了延迟扩展,但尚未使用它;你真的需要启用它吗?

标签: windows batch-file


【解决方案1】:

作为对我的 cmets 的补充,我认为您提供的代码应该是这样的:

@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。如果你有,上面的代码将解决你的问题。尽管我仍然建议您将其重命名为还不是可执行文件名的名称。

【讨论】:

  • 我猜这个错误与语法有关。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    您可以删除该行:

    setlocal enabledelayedexpansion enableextensions
    

    并在末尾添加:

    exit /b An error code-Optional
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-06
      • 1970-01-01
      • 2023-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多