powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / сохранение из консольного приложения
29 сообщений из 29, показаны все 2 страниц
сохранение из консольного приложения
    #37026678
Гогр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здраствуйте.
Есть такое приложение klnagchk.exe в NetAgent 8.0 от касперского. Оно возвращает различные данные, но закрывается оч быстро.
Для того чтобы его просмотреть нормально достаточно
Код: plaintext
klnagchk.exe pause()
в батнике.
Но появилась необходимость получать результат ее работы в doc файл.
был написан следующий vbs сценарий
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
Option Explicit
' Объявляем переменные
Dim ObjExec,WshShell,s,IsBreak,ArrS,Count,i
' Создаем объект WshShell
Set WshShell = WScript.CreateObject("WScript.Shell")
' Запускаем команду 
Set ObjExec=WshShell.Exec("klnagchk.exe")
s=""
IsBreak=False
Do While True  ' Бесконечный цикл
  ' Проверяем, достигнут ли конец выходного потока команды DIR
  If (Not ObjExec.StdOut.AtEndOfStream) Then
    ' Считываем полностью выходной поток команды DIR
    s=s+ObjExec.StdOut.ReadAll
  End If
  If IsBreak Then
    Exit Do  ' Выходим из цикла
  End If
  ' Проверяем, не завершилось ли выполнение DIR
  If ObjExec.Status= 1  Then
    IsBreak=True
  Else
    WScript.Sleep  100  ' Приостанавливаем сценарий на 0,1 сек
  End If
Loop
ArrS=Split(s,vbCrLf)  ' Формируем массив строк
Count=UBound(ArrS)  ' Количество элементов массива

Dim FSO,F,TextStream  'Объявляем переменные
' Инициализируем константы
Const ForReading =  1 , ForWriting =  2 , TristateUseDefault = - 2 

' Создаем объект FileSystemObject
Set FSO=WScript.CreateObject("Scripting.FileSystemObject")
' Создаем в текущем каталоге файл log.doc
FSO.CreateTextFile "log.doc"
' Создаем объект File для файла log.doc
set F=FSO.GetFile("log.doc")
' Создаем объект TextStream (файл открывается для записи)

' Записываем в файл строку
Set TextStream=F.OpenAsTextStream(ForWriting, TristateUseDefault)

For i= 0  To Count- 1 
TextStream.WriteLine ArrS(i)
Next

' Закрываем файл
TextStream.Close
Dim WShell, word 

Set WShell = WScript.CreateObject("WScript.Shell")

Set word = WShell.Exec("C:\Program Files\Microsoft Office\Office12\winword.exe log.doc")
Сценарий работает, но каждый раз при запуске ворда из сценария он спрашивает о кодироке MS-Dos или нет.
Что нужно прописать, чтобы он по умолчанию открывал с кодировкой MS-Dos?
Заранее спасибо
ПС Заранее спасибо за все ответы по делу=)
...
Рейтинг: 0 / 0
сохранение из консольного приложения
    #37026742
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
попробуйте открывать документ так:
Код: plaintext
1.
2.
Set Wrd = CreateObject("Word.Application")
Wrd.Documents.Open FileName:="log.txt", ConfirmConversions:=False, Encoding:= 51251 
Wrd.Visible = True
если автоматом не поможет, надо поиграть с константой Encoding (см. в вордовской ObjectBrowser набор констант MsoEncoding)
...
Рейтинг: 0 / 0
сохранение из консольного приложения
    #37026773
Гогр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2Shocker.Pro
Спасибо, буду копать.
Как я понимаю затык у меня именно в том, что я обращаюсь к ворду как к стороннему по через прямой вызов, а не как к COM объекту. Я правильно понимаю?
Или и при прямом вызове тоже можно играться со свойствами кодировок?
ПС пытаюсь переписать так как вы указали, спасибо за направление.
ПС 2 Это мой 1 скрипт на vbs...=)
...
Рейтинг: 0 / 0
сохранение из консольного приложения
    #37026787
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: Гогр
> Сценарий работает, но каждый раз при запуске ворда из сценария он спрашивает о кодироке MS-Dos или нет.
> Что нужно прописать, чтобы он по умолчанию открывал с кодировкой MS-Dos?


А приложи, пожалуйста пример файла в на котором спрашивает? И какая версия офиса?

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
сохранение из консольного приложения
    #37026794
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гогр2Shocker.Pro
Спасибо, буду копать.
Как я понимаю затык у меня именно в том, что я обращаюсь к ворду как к стороннему по через прямой вызов, а не как к COM объекту. Я правильно понимаю?
Или и при прямом вызове тоже можно играться со свойствами кодировок?
ПС пытаюсь переписать так как вы указали, спасибо за направление.
ПС 2 Это мой 1 скрипт на vbs...=)

Обращение через СОМ конечно в сто раз гибче. Не говоря о том, что ворда просто может не быть по вышеуказанному пути, если он другой версии или установлен в другую папку.
...
Рейтинг: 0 / 0
сохранение из консольного приложения
    #37026798
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Горбонос И какая версия офиса?
Код: plaintext
"C:\Program Files\Microsoft Office\Office12\winword.exe"
...
Рейтинг: 0 / 0
сохранение из консольного приложения
    #37026808
Гогр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2Shocker.Pro
Да,да это стандартный путь=)
...
Рейтинг: 0 / 0
сохранение из консольного приложения
    #37026816
Гогр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
офис 2007,в файле содержаться строки с символьно числовыми парметрами, хотя в файл все пишется строками=)
...
Рейтинг: 0 / 0
сохранение из консольного приложения
    #37026899
Гогр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прошу прощения за глупый вопрос, но приведенный уважаемым Shocker.Pro не компилится, даже в отдельности=(
Скрипт ругается на ":=".
Можно немного поподробнее об этом, например где можно почитать,к сожалению гугл не признался.
ПС как я понимаю приведенный вами код подразумевает множественную инструкцию, но система упорно ругается и желает получить еще инструкций, что-то не могу понять что бы еще ей скормить чтобы она наелась ужо=(
...
Рейтинг: 0 / 0
сохранение из консольного приложения
    #37026939
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ГогрПС как я понимаю приведенный вами код подразумевает множественную инструкцию, но система упорно ругается и желает получить еще инструкций, что-то не могу понять что бы еще ей скормить чтобы она наелась ужо=(
А что, народ... я то в скриптах слаб... вбскрипт не поддерживает именованные параметры? Ну ладно, ща перепишем
...
Рейтинг: 0 / 0
сохранение из консольного приложения
    #37026945
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
Wrd.Documents.Open "log.txt",False,,,,,,,,, 51251 
...
Рейтинг: 0 / 0
сохранение из консольного приложения
    #37027022
Гогр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
попробовал слепить скрипт который открывает документ из текущей папки получилось:
Код: plaintext
1.
2.
3.
4.
5.
Dim fso,path
Set fso=WScript.CreateObject("Scripting.FileSystemObject")
set path=fso.GetFile("log.txt")
Set Wrd = CreateObject("Word.Application")
Wrd.Documents.Open path,False,,,,,,,,, 51251 
Wrd.Visible = True
однако выдет ошибку
Код: plaintext
1.
C:\ 2 .vbs( 6 ,  1 ) Ошибка выполнения Micros
oft VBScript: Несоответствие типа: 'Wrd.Documents.Open'
Путь path к текущему файлу отрабатывает нормально, но по прежнему не выходит каменный цветок=(
ПС 2Shocker.Pro спасибо за участии в головоломании над моей проблемой=)
...
Рейтинг: 0 / 0
сохранение из консольного приложения
    #37027065
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: Shocker.Pro
> Wrd.Documents.Open "log.txt",False,,,,,,,,,51251


от объясни мне, задлянафига перехватывать вывод программы, сохранять его в текстовый файл, что-бы потом героически
преодолевать созданные самим собой трудности?
Я просил кусочек файла, потому что мой пример открывается без вопросов в 2003 ворде:
Делаем bat-файл:
Код: plaintext
1.
dir > c:\log.txt
"C:\Program Files\Microsoft Office\Office12\winword.exe" c:\log.txt
и наслаждаемся красотой и простотой.
Вариант два, если уж полезли в СОМ, так лезте полностью и сохраняйте вывод программы не в текстовом файле, а сразу в
новом документе ворда.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
сохранение из консольного приложения
    #37027076
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: Гогр
> Wrd.Documents.Open path .Path , False,,,,,,,,,51251



Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
сохранение из консольного приложения
    #37027159
Гогр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Игорь Горбонос, спасибо затык был именно в этом, теперь вызывается.
Сначало было решил, что вы ткнули меня носом в совпадение имени переменной и какой то описанной в системе...
ПС ворд теперь радостно открывается. только,насколько понимаю в кодировке 1251=(
ПС2 пытаюсь найти в гугле полную структуру параметров=(
...
Рейтинг: 0 / 0
сохранение из консольного приложения
    #37027167
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: Гогр
> ПС ворд теперь радостно открывается. только,насколько понимаю в кодировке 1251=(

В чем это выражается? Кодировка символов не та? Выводи результат работы программы сразу в вордовский файл, минуя
текстовый.

> ПС2 пытаюсь найти в гугле полную структуру параметров=(

Каких параметров?

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
сохранение из консольного приложения
    #37027190
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ГогрПС2 пытаюсь найти в гугле полную структуру параметров=(
не надо в гугле
надо открыть ворд
Alt+F11
Ctrl+G
набрать Documents.Open
и нажать F1
...
Рейтинг: 0 / 0
сохранение из консольного приложения
    #37027270
Гогр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2Игорь Горбонос, хм...видимо не корректно сформулировал вопрос изначально=(
Попробую переформулировать.
Как выбрать формат кодировки MS-DOS или задать его диалогу выбора, чтобы он не открывался.
По умолчанию в батниках для этого задают ключи. А какие параметры тут дергать?
...
Рейтинг: 0 / 0
сохранение из консольного приложения
    #37027332
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: Гогр

Как такой вариант:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
Option Explicit
' Объявляем переменные
Dim ObjExec,WshShell,s,IsBreak,ArrS,Count,i
Dim wd, d
Set wd = WScript.CreateObject("Word.Application")
Set d = wd.Documents.Add
' Создаем объект WshShell
Set WshShell = WScript.CreateObject("WScript.Shell")
' Запускаем команду
Set ObjExec=WshShell.Exec("klnagchk.exe")
s=""
IsBreak=False
Do While True  ' Бесконечный цикл
  ' Проверяем, достигнут ли конец выходного потока команды DIR
  If (Not ObjExec.StdOut.AtEndOfStream) Then
    ' Считываем полностью выходной поток команды DIR
'    s=s+ObjExec.StdOut.ReadAll
 wd.Selection.TypeText ObjExec.StdOut.ReadAll
  End If
  If IsBreak Then
    Exit Do  ' Выходим из цикла
  End If
  ' Проверяем, не завершилось ли выполнение DIR
  If ObjExec.Status= 1  Then
    IsBreak=True
  Else
    WScript.Sleep  100  ' Приостанавливаем сценарий на 0,1 сек
  End If
Loop

d.SaveAs "c:\log.doc"
SET d = Nothing
wd.Visible = TRUE
SET wd = Nothing

> Как выбрать формат кодировки MS-DOS или задать его диалогу выбора, чтобы он не открывался.
> По умолчанию в батниках для этого задают ключи. А какие параметры тут дергать?

Вот для этого я и просил пример файлика-лога. Как вариант, можно попробовать поменять кодовую страницу для вывода
батников, вообщем мысли есть :)

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
сохранение из консольного приложения
    #37027340
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гогрзадать его диалогу выбора, чтобы он не открывался.
ConfirmConversions:=False

Собственно, это присутствует в моей строке открытия. А что касается выбора кодировки - тут, как я сказал, надо поиграться с параметром Encoding:=51251

Ну или перекодировать до сохранения в файл
...
Рейтинг: 0 / 0
сохранение из консольного приложения
    #37027409
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: Игорь Горбонос
> Я просил кусочек файла, потому что мой пример открывается без вопросов в 2003 ворде:


А вот такой пример, даже с читабельными русскими бувами
Код: plaintext
1.
2.
chcp  1251 
dir > c:\log_111.txt
"C:\Program Files\Microsoft Office\Office11\winword.exe" c:\log_111.txt

P.S. И все это в три строки bat-файла :)

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
сохранение из консольного приложения
    #37027439
Гогр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот пример содрежимого файлика, изменил только айпишник сервера=)
Остальное осталось неизменным.
ПС К сожалению нужный эффект достигнут как у злого джина, вроде бы диалога нет, но и кодировка 1251 для файла в 51251
ПС2 2Игорь Горбонос ваш вариант кода куда как лучше чем мой. Мой воялся за счет склейки различных кусков в 1 целое, что видно из коментариев=)
ПС3 Спасибо за терпение и адекватные ответы и тычки носом
ПС3 У вас все гуманнее чем в ветке SQL=)
...
Рейтинг: 0 / 0
сохранение из консольного приложения
    #37027469
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: Гогр
> Вот пример содрежимого файлика, изменил только айпишник сервера=)
> Остальное осталось неизменным.

Понял, сейчас посмотрю.

> ПС3 У вас все гуманнее чем в ветке SQL=)

Это тебе так кажется, на самом деле мы стебёмся над всеми, в том числе и над собой

Ещё раз спрошу:
какой результат запуска такого bat-файла:
Код: plaintext
1.
2.
chcp  1251 
klnagchk.exe > c:\log_111.txt
"C:\Program Files\Microsoft Office\Office11\winword.exe" c:\log_111.txt
Путь к своему ворду поправь :)

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
сохранение из консольного приложения
    #37027507
Гогр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2Игорь Горбонос
Результат такой же как и после скрипта, ворд неустанно просит через диалог...=)
ПС у меня все таки офис в 12 а не в 11 папке=)
...
Рейтинг: 0 / 0
сохранение из консольного приложения
    #37027584
Гогр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прошу за предыдущее сообщение туплю...
...
Рейтинг: 0 / 0
сохранение из консольного приложения
    #37027750
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: Гогр
> Результат такой же как и после скрипта, ворд неустанно просит через диалог...=)


Вот здесь написанно как отключать это окно, но я пока
не нашел как установить другой стандарт кодировки для открытия файла и у меня эта рекомендация не работает :)

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
сохранение из консольного приложения
    #37027959
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и до кучи
Здесь пример функции конвертирующей текст из
одной кодировки в другую на VBScript. Если добавить её в твой первый скрипт, то получится текстовый файл в "правильной"
для ворда кодировке.

P.S. Сам сможешь или показать?

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
сохранение из консольного приложения
    #37028255
Гогр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо. Завтра попробую,когда снова доступ будет к ПК на котором каспер стоит.=)
ПС Для чистоты эксперимента, если не заработаит...отпишусь=)
...
Рейтинг: 0 / 0
сохранение из консольного приложения
    #37029121
Гогр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
мдя, что-то не получилось.
пробовую использовать свойство TextEncoding со значением msoEncodingCyrillicAutoDetect
...
Рейтинг: 0 / 0
29 сообщений из 29, показаны все 2 страниц
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / сохранение из консольного приложения
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]