Служба возврата COS ZF

В COS я хотел бы вернуть все услуги с определенным именем. В команде запускается команда sc queryex type= service state= all | найти / я "BFE", и он будет отображать имя службы. В COS есть $ZF, который может принять команду, но она возвращает 0, не уверенный в том, что я делаю неправильно.

USER>s cmd = "sc queryex type= service state= all | find /i ""BFE"""

USER>W cmd
sc queryex type= service state= all | find /i "BFE"
USER>set rc=$zf(-2,cmd)

USER>W rc
0

2 ответа

В Caché мы можем вызвать внешнюю команду с помощью функции $zfгде первый аргумент может быть -1 или же -2, куда $zf(-1) ждет, пока команда будет завершена, в результате будет код выхода из этой команды. $zf(-2) не ждет и в результате возвращается 0 если порожденный процесс был успешно создан, и -1 если не. В вашем случае вы должны использовать $zf(-1) потому что вы ожидаете получить какой-то результат немедленно. Но вы должны перенаправить любой вывод во временный файл и прочитать его после вызова.

Я бы также добавил, что $ZF(-1) а также $ZF(-2) функция устарела в последней версии. А пока можно просто добавить >> resultfile.txt в arg а затем просмотрите файл. Я бы однако использовал $ZF(-1) скорее, чем $ZF(-2), которая запускает команду как дочерний процесс, асинхронно.

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