Не могу подружить nbtstat и Wscript.Shell.Run()
Доброго дня, коллеги. Спасите мой мозг, пжл.
Имеется 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С - не знаю.
Имеется 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С - не знаю.
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Коллега. Таки вы попробовали выполнить команды именно пакетным скриптом?
На худой конец можно выполнить "АТ [время] script.bat".
Не исключено, что стоит запустить 1С от имени администратора и убедиться, что с правами все ровно.
На худой конец можно выполнить "АТ [время] script.bat".
Не исключено, что стоит запустить 1С от имени администратора и убедиться, что с правами все ровно.
(5) fzt, я забил на nbtstat. ping -a <ip> - возвращает возвращает dns-имя, если оно есть, или wins-имя, когда не доступно dns-имя. Так что проблему решил другим способом. Использование nbtstat в батнике, вызываемом из 1С, проблему не решил. Все равно выходила ошибка, что "nbtstat не является программой"
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот