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, что не всегда необходимо) в другом месте. Об этом уже много написано.