0

我正在使用 amqsput 将消息写入批处理文件中的队列。

call "C:\folderdir\code\mqfile\amqsput" QUEUE QMGR < File

代码工作正常。但是我想捕获错误并回显适当的响应消息。

Ex - 如果队列已满,mq 将返回错误代码和消息。我想捕获消息和代码并将其打印在屏幕上。

errorlevel 不捕获 mq 错误代码。

4

1 回答 1

0

使用for /f循环捕获输出。

@echo off
for /f "delims=" %%A in ('call "C:\folderdir\code\mqfile\amqsput" QUEUE QMGR ^< File 2^>^&1') do echo(%%A
pause

2>&1正在将标准错误重定向到标准输出,并且for /f循环正在捕获标准输出。

示例/概念证明

测试.bat

@echo off
for /f "delims=" %%A in ('call Test2.bat ^< Test.txt 2^>^&1') do echo(Test = %%A
pause
exit /b 0

测试2.bat

@echo off
set /p "Test="
echo(%Test%
echo Error 1>&2
exit /b 0

测试.txt

Hello

输出

C:\Users\User\Desktop>Test.bat
Test = Hello
Test = Error
Press any key to continue . . .
于 2013-07-31T16:05:23.730 回答