Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Программирование "удобняшек" на VBScript (Часть 2)

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 54 55 56 57 58 59 60 61 62 63 64 65 66 67

Открыть новую тему     Написать ответ в эту тему

ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вопросы, задачи и их решения по VBScript.

 
Мануал (english, 600 Кб). | Зеркало
MS Scripting 5.6 (700 КБ), включает последнюю версию VBS. Владельцам XP/2000(?) должен быть не нужен. | Зеркало
Немного на wikiпедии.
Предыдущие части: 1
 
Смежные темы:
Сценарии Windows
Командная строка, батники\сценарии (bat, cmd)
Скрипты KiXtart

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 04:12 12-07-2011 | Исправлено: Smitis, 23:28 26-02-2018
urodliv



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Уважаемые знатоки VBS. Нужна ваша помощь и пояснение.
Вот тут кусок моего скрипта
 
На помеченную строку ругается интерпретатор: "Объектная переменная не задана". Судя по всему не воспринимается передача переменной bs.
Верно ли я думаю, и как исправить эту ошибку?

----------
Очень скоро еда станет совершенно безвкусной, и тогда этот недостаток придётся компенсировать хорошо развитым воображением.

Всего записей: 6691 | Зарегистр. 29-04-2009 | Отправлено: 01:32 02-01-2014 | Исправлено: urodliv, 01:33 02-01-2014
Laserje18

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите, как добавить к текстовому файлу первую строку, т.е. содержимое файла должно переместиться на одну строку вниз, а в первую строку нужно добавить информацию.

Код:
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.OpenTextFile("test.txt",8,True,0)
f.WriteLine Now()
f.Close

Всего записей: 64 | Зарегистр. 11-09-2012 | Отправлено: 21:20 26-01-2014
Alex_Piggy

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Доброе время
urodliv
Вы неправильный тип передаете. osa.NameSpace принимает строку, а Вы передаете объект. Попробуйте  
set objFl = osa.NameSpace(bs.Path)
 
Laserje18
Не знаю. Наверное только перезапись всего файла...

Код:
 
Set fs = CreateObject("Scripting.FileSystemObject")  
Set f = fs.OpenTextFile("test.txt",1,True,0)  
If Not f.AtEndOfStream Then filedata = f.ReadAll
f.Close
Set f = fs.OpenTextFile("test.txt",2,True,0)
f.WriteLine Now()  
f.Write (filedata)
f.Close
 

Всего записей: 1891 | Зарегистр. 07-08-2002 | Отправлено: 21:34 26-01-2014
Laserje18

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alex_Piggy
Спасибо, работает идеально.

Всего записей: 64 | Зарегистр. 11-09-2012 | Отправлено: 23:15 26-01-2014
Scaramanga



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Доброго времени суток
Необходимо решение для следующей задачи.
Есть определенный логон скрипт забирающий файл из общей сетевой папки, ставить в ГПО ожидание нельзя, так как пользователи ругаются на долгую загрузку системы, да и в принципе этого и не нужно.
Как в самом скрипте прописать ожидание доступности сетевой папки и при доступности запуск остального тела скрипта?
Заранее спасибо

Всего записей: 516 | Зарегистр. 24-04-2008 | Отправлено: 09:59 28-01-2014
msmih



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alex_Piggy
спасибо. как выяснил с помощью вашего скрипта проблема не XMLHTTP.responseText.
Сам не догадался в txt выгрузить. Передается не весь текст в word. опять-таки нужна помощь.
дополнительно к вашему скрипту использую следующий код

Код:
 
Set objWord = CreateObject("Word.Application")
objWord.Caption = "Test"
objWord.Visible = True
 
Set objDoc = objWord.Documents.Add()
Set objSelection = objWord.Selection
 
objSelection.ParagraphFormat.Alignment = "3"
objSelection.Font.Name = "Times New Roman"
objSelection.Font.Size = "12"
 
objSelection.TypeText XMLHTTP.responseText  
objSelection.TypeParagraph()
 

на выходе обрезанный текст
 
ps решил
Alex_Piggy еще раз спасибо!

Всего записей: 1192 | Зарегистр. 29-01-2006 | Отправлено: 22:03 30-01-2014 | Исправлено: msmih, 22:35 30-01-2014
msmih



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alex_Piggy
Буду признателен за еще одну подсказку как в полученном результате с помощью  XMLHTTP.responseText вывести/сохранить только последнюю строку? что-то подсказывает, что это функция split, но не могу ее грамотно прописать

Всего записей: 1192 | Зарегистр. 29-01-2006 | Отправлено: 10:09 01-02-2014
Alex_Piggy

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Доброе время, msmih
По поводу Word.Application - Вы использовали .InsertAfter вместо .TypeText, верно?
 
Можно через split (вывести последнюю непустую строку)

Код:
vArray = split (Replace(XMLHTTP.responseText, vbCrLf, vbLf), vbLf)
For i = Ubound (vArray) To 0 Step -1
    If vArray (i)<>"" Then
        vString = vArray (i)
        Exit For
    End If
Next
MsgBox vString
 

А можно через Mid. Что-то вроде (только вопрос с концевыми пустыми строками... )
MsgBox Mid (XMLHTTP.responseText, InStrRev(XMLHTTP.responseText, vbLf, Len(XMLHTTP.responseText)-1))

Всего записей: 1891 | Зарегистр. 07-08-2002 | Отправлено: 11:24 01-02-2014
msmih



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alex_Piggy

Цитата:
По поводу Word.Application - Вы использовали .InsertAfter вместо .TypeText, верно?

немного не так. может быть коряво, но  
.Paragraphs.Add.Range.Text=XMLHTTP.responseText
какой вариант вернее?

Всего записей: 1192 | Зарегистр. 29-01-2006 | Отправлено: 12:40 01-02-2014
gale

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Код:
set devmgr_show_nonpresent_devices=1
start devmgmt.msc

Как этот BAT переделать в VBS?
Мне не нравится чёрное окно, мелькающее при запуске командного файла.

Всего записей: 119 | Зарегистр. 09-03-2006 | Отправлено: 13:34 03-02-2014
msmih



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Возникло еще пару вопросов. Буду признателен за подсказки.
Парсю сайт.  
Информация на сайте расположена в следующем порядке:
<тег> инфа </тег>
<тег> инфа </тег>
<тег> инфа </тег>
Из парсинга первой пары тегов получаю информацию в виде Переменная_1 и Переменная_2.
Из-за не очень сильных познаний, не соображу как организовать цикл. Чтобы шел переход к следующему блоку тегов. И цикл был пока теги не оканчиваются.

Всего записей: 1192 | Зарегистр. 29-01-2006 | Отправлено: 06:13 07-02-2014
Alex_Piggy

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Доброе время, msmih
Как Вы сейчас парсите теги?
Если страница содержит xml в явном виде, можно попробовать через XMLHTTP.responseXML.getElementByTagName
Если нет - мне, например, привычны регекспы:

Код:
 
Set objRegExp = CreateObject("VBScript.RegExp")
vString = "<тег> инфа1 </тег>  <тег> инфа2 </тег>  <тег> инфа3 </тег>"
objRegExp.Global = True
objRegExp.Pattern = "<(тег)>(.*?)</\1>"
Set objMatches = objRegExp.Execute(vString)
For Each Match in objMatches
  MsgBox Match.Submatches.Item(1)    
Next  
 

 

Всего записей: 1891 | Зарегистр. 07-08-2002 | Отправлено: 10:08 07-02-2014
msmih



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Доброго времени суток, Alex_Piggy
Во-первых спасибо!
Парсю очень непрофессионально. Страница в чистом виде html. Но использую Msxml.
делаю запрос с сайта. А далее с помощью split обрезаю текст по тегам со всех сторон.
дальше передаю текст в word  и вычищаю с помощью vba все лишнее.
Завтра попробую с вашим вариантом разобраться.
 

Всего записей: 1192 | Зарегистр. 29-01-2006 | Отправлено: 19:54 07-02-2014 | Исправлено: msmih, 19:54 07-02-2014
msmih



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Доброго времени суток,Alex_Piggy
Немного модифицировал ваш пример и как итог моя задумка работает.
Буду признателен за подсказку с Patern.
Как это расшифровывается "<(тег)>(.*?)</\1>", или как в этом случае скрипт просматривает текст ? у себя я прописал жесткий тег.
 
И еще вопрос, но к другой задумке. Есть большой xml файл. Где можно посмотреть примеры как парсить его с помощью XMLHTTP.responseXML.getElementByTagName?

Всего записей: 1192 | Зарегистр. 29-01-2006 | Отправлено: 11:06 08-02-2014 | Исправлено: msmih, 11:06 08-02-2014
Alex_Piggy

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Доброе время, msmih
Посмотрите описание работы с XML на www.script-coding.com DOM XML.  
Объект RegExp. Pattern - скобки здесь - выделение фрагментов. "\1" - ссылка на первый фрагмент - "тег". ".*?" - "минимальное количество любых символов". То есть получается - найти и вывести любые символы, которые расположены между <тег> и </тег>. Если тег содержит дополнительную информацию, то лучше "<(тег).*?>(.*?)</\1>"
Я не знаю, какую литературу посоветовать по изучению регулярных выражений...

Всего записей: 1891 | Зарегистр. 07-08-2002 | Отправлено: 12:07 08-02-2014
msmih



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alex_Piggy
спасибо. буду дальше разбираться.

Всего записей: 1192 | Зарегистр. 29-01-2006 | Отправлено: 13:45 08-02-2014
laprad

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
В связи с необходимостью минимизации набора ПЗ на компьютерах пришлось удалить Birthday millenium (напоминаловку дней рождений). Хочется заменить на скрипт, результатом работы которого будет некое окошко с инфой при старте компьютера  - текущая дата, сегодня ДР у таких-то, завтра - у таких, послезавтра у таких. Если у кого УЖЕ есть хоть какой-то вариант решения - прошу поделиться.  
 

Всего записей: 392 | Зарегистр. 19-01-2009 | Отправлено: 21:19 08-02-2014
Alex_Piggy

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Доброе время, laprad
Только написано. Все равно посмотрите - авось пригодится Подробнее...  
Читает из "D:\birthday.txt" данные вида

Код:
 
08.02.1964 Алексеев Алексей Алексеевич (1 цех)
09.02.1950 Петров Петр Петрович (2 цех)
10.02.1934 Сидоров Сидор Сидорович (бугхалтерия)
 


Всего записей: 1891 | Зарегистр. 07-08-2002 | Отправлено: 23:30 08-02-2014
Cryzer



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
delete

Всего записей: 102 | Зарегистр. 22-09-2007 | Отправлено: 20:57 09-02-2014 | Исправлено: Cryzer, 23:23 26-02-2014
msmih



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Доброго времени суток!
Снова need help.
как можно проверить наличие запущенного приложения? Например, если запущен total commander - ничего не делать, если не запущен - послать комп в режим кибернации.
Буду признателен за совет.

Всего записей: 1192 | Зарегистр. 29-01-2006 | Отправлено: 21:08 10-02-2014
Открыть новую тему     Написать ответ в эту тему

Страницы: 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 54 55 56 57 58 59 60 61 62 63 64 65 66 67

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Программирование "удобняшек" на VBScript (Часть 2)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru