Служба возврата 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)
, которая запускает команду как дочерний процесс, асинхронно.