You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

批处理脚本输出值无法存入SSIS变量:问题排查请求

排查SSIS中批处理脚本存储WinSCP检查结果的问题

原批处理脚本的核心问题

  1. 未将结果输出到标准输出:SSIS的StandardOutputVariable捕获的是批处理打印到控制台的内容,原脚本仅在内部设置变量,未通过echo输出结果,导致SSIS无法获取值。
  2. 变量赋值的空格错误:set fileexist = 0中等号两边的空格会让变量名变成fileexist (带末尾空格)、值变成 0(带头空格),即使后续输出也会出现格式问题。
  3. WinSCP输出干扰:WinSCP执行命令时会输出会话信息,这些冗余内容会混入标准输出,导致SSIS无法拿到纯净的0或1。

修正后的批处理脚本

@echo off
set REMOTE_PATH=/D:/TRANSFERS/IN/FILE.TXT
cd "C:\Program Files (x86)\WinSCP\"

:: 执行WinSCP命令,将无关输出重定向到空
WinSCP.com /command ^
    "open ftptwo" ^
    "stat %REMOTE_PATH%" ^
    "exit" >nul 2>&1

:: 根据错误码输出结果到标准输出
if %ERRORLEVEL% equ 0 (
    echo 0
    exit /b 0
) else (
    echo 1
    exit /b 1
)

关键修正说明

  • 用>nul 2>&1把WinSCP的所有输出(标准输出、错误输出)重定向到空,避免冗余信息干扰SSIS捕获结果。
  • 直接通过echo 0或echo 1将结果打印到标准输出,让SSIS的StandardOutputVariable能准确获取纯净的数字值。
  • 简化逻辑,去掉不必要的内部变量设置,直接依据ERRORLEVEL判断并输出结果。

SSIS配置注意事项

  • 确认Execute Process Task的StandardOutputVariable指定为字符串类型的fileexist变量。
  • 在Precedence Constraint Editor中使用表达式约束:
    • 右侧分支:@[User::fileexist] == "0"
    • 左侧分支:@[User::fileexist] == "1"

内容的提问来源于stack exchange,提问作者Junsh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 02:42:50