0

试图了解如何正确发送 BODY 变量?

我在批处理文件中使用 BLAT 收到以下信息:

SET BODY="exit error code from NET USE = %ERRORLEVEL%. Please contact the Business Systems Technical Team On Call Person"

以下是 BLAT 的用法:

"C:\Program Files\BLAT\blat.exe" -To myemail@domain.org -Subject "RAD File Transfer Error" -Body %BODY%

Blat v3.2.19(构建:2017 年 11 月 18 日 03:15:08)64 位 Windows,完整,Unicode

Blat 看到并处理了这些选项,并发现最后一个选项有问题......

-To myemail@domain.org
-Subject RAD 文件传输错误 -Body
没有为选项提供足够的参数:-Body Blat 发现错误:-body

-body : 消息正文,用引号 (") 括起来以包含空格

这是 SET BODY 所在的位置:

copy /Y "C:\channels\filetransfer_process\*" "D:\MSCMRADbackups1\"
echo %ERRORLEVEL% 
    IF %ERRORLEVEL% NEQ 0 (
    IF %ERRORLEVEL% NEQ 1 (   
    echo Setting BODY1 at: %date% %time%
    SET BODY="exit error code from Backup of RAD file = %ERRORLEVEL%."
    goto :mailerror
    )
 ) ELSE (
 EXIT
 )
4

2 回答 2

0

另一个迟来的答案在这里,但无论如何都会发布它,希望它会对某人有所帮助。

-Body 选项需要一个 - 并且只有一个 - 参数。您收到以下错误的事实:“-Body Not enough arguments provided for option:”意味着您没有提供选项,这意味着当您将 %BODY% 传递给 Blat 时它为空。

您取决于在嵌套 IF 语句中设置的 BODY 。我建议您尝试在外部 IF 块之前使用以下行:

SETLOCAL ENABLEDELAYEDEXPANSION

设置 BODY 后,使用 bangs(感叹号)而不是百分号来访问延迟扩展值。因此,在您的 blat 命令中,使用:

blat ... -Body !BODY!

(如果在 SET 命令中提供了引号,则此处不需要引号。)

在其他地方寻求有关 SETLOCAL ENABLEDELAYEDEXPANSION(和 ENDLOCAL,这并不总是必需的)的帮助。已经写了很多关于它的文章。

于 2022-02-09T14:43:07.457 回答
0

我知道这是一篇旧帖子,但也许答案可能对某人有所帮助。由于您的字符串包含空格,因此在将其作为选项传递给 blat 时必须使用引号。

所以使用-Body "%BODY%"而不是 -Body %BODY%。

于 2019-11-18T12:28:01.727 回答