Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
tveritin
Зарегистрирован: 26.01.2016 Сообщения: 191 Откуда: Санкт-Петербург
|
Добавлено: Вс Мар 02, 2025 15:36 Заголовок сообщения: Выполнение процесса из командной строки |
|
|
Существует конструкция
Код: | SYSTEM "command line"; |
Но, отследить код возврата (ERRORLEVEL) из X-языка не представляется возможным.
Как обработать код возврата или есть ли функция-аналог для выполнения процесса из командной строки, возвращающая errorlevel ?
Собственно, ответом на вопрос была бы возможность получить из х-языка значение переменной среды %ERRORLEVEL%. |
|
Вернуться к началу |
|
 |
tveritin
Зарегистрирован: 26.01.2016 Сообщения: 191 Откуда: Санкт-Петербург
|
Добавлено: Пн Мар 03, 2025 11:51 Заголовок сообщения: |
|
|
Нашел решение, правда на БК пока не отладил:
Код: | declare @error_save int
EXEC @error_save = master.dbo.xp_cmdshell 'command line', 'NO_OUTPUT'
PRINT '@error_save after cmdshell='+Convert(VARCHAR,@error_save)+', 1=fail , 0=ran successfully.' |
|
|
Вернуться к началу |
|
 |
tveritin
Зарегистрирован: 26.01.2016 Сообщения: 191 Откуда: Санкт-Петербург
|
Добавлено: Пн Мар 03, 2025 12:47 Заголовок сообщения: |
|
|
Можно как вариант оставить как есть и сохранить результат во временную таблицу
Код: | drop table #tmp;
execute xSQL{declare @error_save int
EXEC @error_save = master.dbo.xp_cmdshell 'command line', 'NO_OUTPUT'
select @error_save as c into #tmp};
| А потом из неё забрать
|
|
Вернуться к началу |
|
 |
tveritin
Зарегистрирован: 26.01.2016 Сообщения: 191 Откуда: Санкт-Петербург
|
Добавлено: Пн Мар 03, 2025 17:12 Заголовок сообщения: |
|
|
Одно не учёл - `command line` будет запускаться НА СЕРВЕРЕ, чего бы не очень хотелось. Так что, решение пока не найдено... |
|
Вернуться к началу |
|
 |
superjek
Зарегистрирован: 04.04.2022 Сообщения: 29
|
Добавлено: Пт Мар 07, 2025 10:43 Заголовок сообщения: |
|
|
Можно из секции VB вызвать WScript.Shell метод Run
https://www.script-coding.com/WSH/WshShell.html
Код: |
VB
{
Set WshShell = CreateObject("WScript.Shell")
RetCode = WshShell.Run("notepad", 1, True)
MsgBox "Обработка завершена! Код возврата - " & RetCode
};
|
|
|
Вернуться к началу |
|
 |
Spartak
Зарегистрирован: 18.03.2010 Сообщения: 185
|
Добавлено: Пт Мар 07, 2025 20:21 Заголовок сообщения: |
|
|
или сборку сделать свою |
|
Вернуться к началу |
|
 |
|