:: Visual Foxpro, Foxpro for DOS
Re: ошибка выполнения команды RUN
Sergio
Автор

Сообщений: 438
Откуда: Донецк
Дата регистрации: 16.06.2005
Добрый день!
Снова похожая проблема.
Есть у меня следующий вызов скрипта.
Когда я делаю так, то результат в переменной ls_users такой, как меня устраивает.

ls_quser_server = 'powershell "quser /server:' + ls_name_server+ '" > C:\Temp\testquser.txt'
Strtofile(ls_quser_server,[C:\Temp\testqq.cmd])
ws = Createobject('WScript.Shell')
ws.Run('C:\Temp\testqq.cmd',2,.T.)
Release ws
ls_users=Filetostr("C:\Temp\testquser.txt")
? ls_users
По строкам - формирование переменной с номером сервера, сохранение в cmd файл, запуск WScript, сохранение результата в ls_users.

ls_users такой -
s.fedotova rdp-tcp#19 2 ЂЄвЁў­® . 16
и т.д.

Когда я пытаюсь сделать без использования cmd файла, подставляя переменную в ws.Run, то, вроде бы, всё работает, но результат ls_users совсем другой

ls_quser_server = 'powershell "quser /server:' + ls_name_server+ '" > C:\Temp\testquser.txt'
ws = Createobject('WScript.Shell')
ws.Run(ls_quser_server,2,.T.)
Release ws
ls_users=Filetostr("C:\Temp\testquser.txt")
? ls_users

яю s . f e d o t o v a r d p - t c p # 1 9
и т.д.
Не подскажете, почему я получаю разный результат?
Визуально при запуске первой программы внизу проскакивает чёрное окошко (DOS), а второй - синее(PowerShell).
Ratings: 0 negative/0 positive
Re: ошибка выполнения команды RUN
PaulWist

Сообщений: 14501
Дата регистрации: 01.04.2004
В первом случае возвращается ASCII строка в дефолтной кодовой странице.

Во втором Unicode.


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: ошибка выполнения команды RUN
akvvohinc

Сообщений: 4001
Откуда: Москва
Дата регистрации: 11.11.2008
Цитата:
Не подскажете, почему я получаю разный результат?
В первом случае запускается cmd, который, в свою очередь, стартует Powershell (конечный результат выдает cmd).
Во втором - Powershell запускается напрямую (конечный результат выдает Powershell).

Видимо, в первом случае результат, выдаваемый Powershell, автоматически преобразуется из Unicode при приеме в cmd, и от cmd вы его получаете в текущей кодировке (её можно и поменять, добавив команду CHCP 850 в cmd - тогда исчезнет ЂЄвЁў­® и появится Active).

Во втором случае вы сами должны позаботиться о преобразовании строки из Unicode, применив к ней функцию STRCONV(string,6).



Исправлено 3 раз(а). Последнее : akvvohinc, 16.12.22 17:41
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 17 (Гостей: 17)

© 2000-2023 Fox Club 
Яндекс.Метрика