Не могу подружить nbtstat и Wscript.Shell.Run()

1. SiAl 76 01.12.15 17:01 Сейчас в теме
Доброго дня, коллеги. Спасите мой мозг, пжл.
Имеется Windows 7 x64 Ultimate, 1С - 8.3.7.1759

Требуется получить вывод команды NBTSTAT -A <IP-Адрес>
Вот кусок кода:

WSh = Новый COMОбъект("WScript.Shell");
Запуск = "%comspec% /c nbtstat -A 192.168.200.108 > C:\nbtstat.txt";
Если WSh.Run(Запуск, 0, Истина) = 0 Тогда

Run возвращает 1 вместо 0.
Пробовал следующие варианты:

Запуск = "%comspec% /c "nbtstat -A 192.168.200.108" > C:\nbtstat.txt";

- возвращает 1, пишет в StdErr - "nbtstat не является исполняемым файлом".

Запуск = "%comspec% /c c:\windows\system32\nbtstat.exe -A 192.168.200.108 > C:\nbtstat.txt";

- тоже что и выще, только ругается на nbtstat.exe,

Запуск = "c:\windows\system32\nbtstat.exe -A 192.168.200.108 > C:\nbtstat.txt";

- пишет что "Ошибка при вызове метода контекста"

Запуск = "nbtstat -A 192.168.200.108 > C:\nbtstat.txt";

- пишет что "Ошибка при вызове метода контекста"

Пробовал в VBScript

Set objShell = CreateObject("Wscript.Shell")
objShell.Run("%comspec% /c nbtstat -A 192.168.200.108 > C:\nbtstat.txt, 0, True)

работает нормально.

Также работает нормально в 1С

WSh = Новый COMОбъект("WScript.Shell");
Запуск = "%comspec% /c nslookup 192.168.200.108 > C:\nbtstat.txt";
Если WSh.Run(Запуск, 0, Истина) = 0 Тогда

Но дело в том, что по IP-адресу не для всех компов, откликающихся на ping возвращает DNS-имя.

Может кто уже побеждал эту заразу? Или кто знает как другим способом делать программно запрос по NetBIOS, используя IP-адрес?

Есть какая-то функция Win32 API GetHostByAddr, но как ее использовать в 1С - не знаю.
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. SiAl 76 02.12.15 06:26 Сейчас в теме
3. fzt 02.12.15 10:17 Сейчас в теме
Проблему можно решить, а можно обойти.
ЗапуститьПриложение("C:\tmp\script.bat");

Содержимое скрипта:
nbtstat -A 192.168.200.108 > C:\tmp\nbtstat.txt

Не пиши в C:\. Дай права, какие должно на \tmp
4. SiAl 76 03.12.15 08:16 Сейчас в теме
(3) fzt, я ушел от ЗапуститьПриложение(), потому что моргает окно. При использование Wscript.Shell.Run окно не появляется при втором и третьем аргументе 0 и Истина соотвественно. В оригинальной разработке вывод я отправляю в каталог %Temp%
5. fzt 03.12.15 17:28 Сейчас в теме
Коллега. Таки вы попробовали выполнить команды именно пакетным скриптом?
На худой конец можно выполнить "АТ [время] script.bat".

Не исключено, что стоит запустить 1С от имени администратора и убедиться, что с правами все ровно.
6. SiAl 76 07.12.15 14:39 Сейчас в теме
(5) fzt, я забил на nbtstat. ping -a <ip> - возвращает возвращает dns-имя, если оно есть, или wins-имя, когда не доступно dns-имя. Так что проблему решил другим способом. Использование nbtstat в батнике, вызываемом из 1С, проблему не решил. Все равно выходила ошибка, что "nbtstat не является программой"
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот