BLAT не принимает мой аргумент%BODY%

Пытаетесь понять, как правильно отправить переменную 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 (сборка: 18 ноября 2017 г., 03:15:08) 64-битная версия Windows, Full, Unicode

Блат увидел и обработал эти параметры, и нашел ошибку в последнем...

-Для myemail@domain.org
Ошибка передачи файла 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
 )

2 ответа

Я знаю, что это старый пост, но, возможно, ответ кому-то поможет. Поскольку ваша строка содержит пробелы, вы должны использовать кавычки при передаче ее в blat в качестве опции.

Поэтому используйте -Body "%BODY%" вместо -Body %BODY%.

Еще один запоздалый ответ здесь, но все равно публикую его в надежде, что он кому-то поможет.

Параметр -Body принимает один -- и только один -- аргумент. Тот факт, что вы получаете следующую ошибку: «-Body Недостаточно аргументов для параметра:», означает, что вы не предоставили параметр, а это означает, что %BODY% был нулевым, когда вы передали его Блату.

Вы зависите от BODY, установленного во вложенных операторах IF. Я предлагаю вам попробовать использовать следующую строку перед внешним блоком IF:

      SETLOCAL ENABLEDELAYEDEXPANSION

После того, как вы установили BODY, получите доступ к значению отложенного расширения, используя челки (восклицательные знаки) вместо знаков процента. Итак, в вашей команде blat используйте:

      blat ... -Body !BODY!

(Кавычки здесь не нужны, если они были указаны в команде SET.)

Ищите справку по SETLOCAL ENABLEDELAYEDEXPANSION (и ENDLOCAL, что не всегда необходимо) в другом месте. Об этом уже много написано.

Другие вопросы по тегам