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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
ComradG



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

Цитата:
Я без проблем могу получать тело письма, вложенные в письмо файлы и т.п.
то есть, так же vbs'кой, надо полагать? можно глянуть? и кстати, какая кодировка используется?

Всего записей: 2038 | Зарегистр. 05-07-2008 | Отправлено: 16:16 29-10-2011
NvvLazyTiger



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ComradG
Цитата:
то есть, так же vbs'кой, надо полагать? можно глянуть?
Что именно тебя интересует? У меня скрипт за 20 Kb и я не готов его публиковать. В т.ч. и потому, что там используются чужие know-how. Но на конкретный вопрос могу попробовать ответить. У тебя есть конкретная проблема касаемо?

Цитата:
и кстати, какая кодировка используется?
Где? В письмах - чего только не встретишь. У меня - 866/1251. На Exchange - 1251 (для кириллицы - Россия, как-никак).

Всего записей: 257 | Зарегистр. 14-02-2009 | Отправлено: 01:09 30-10-2011
ComradG



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

Цитата:
и я не готов его публиковать.
есть личка, да и потом здесь вряд ли кто-то станет смеяться: что постыдного в том, чтобы тянуться к новым знаниям? если более конкретно, то меня интересует каким образом получается именно тело письма.

Цитата:
У меня - 866/1251. На Exchange - 1251
хм, а однабайтовая дососвкая кодировка для чего? может все таки 1251?

Всего записей: 2038 | Зарегистр. 05-07-2008 | Отправлено: 11:17 31-10-2011
NvvLazyTiger



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ComradG
Цитата:
меня интересует каким образом получается именно тело письма
Просто.
Цитата:
    Set objSession = WScript.CreateObject("MAPI.Session")
    objSession.Logon ,,,,,,strMailHost & vbLf & strMailUser
    Set objInboxFolder = objSession.Inbox
    Set objInMessagesCollection = objInboxFolder.Messages
' [...]
      Set objOneMsg = objInMessagesCollection.GetFirst
      strTemp = objOneMsg.Text
Вот в strTemp и будет тело первого письма (из наличных в п/я).

Цитата:
хм, а однабайтовая дососвкая кодировка для чего? может все таки 1251?
У меня (и в серверных, и в клиентских решениях) основная кодировка именно 866. В технически обоснованных случаях использую перекодирование 866 <=> 1251.

Цитата:
здесь вряд ли кто-то станет смеяться: что постыдного в том, чтобы тянуться к новым знаниям
А я-то здесь причём? ;)
Да и не заботит меня чей-то смех в мой адрес. :-|

Всего записей: 257 | Зарегистр. 14-02-2009 | Отправлено: 12:26 31-10-2011
zolivan

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Друзья, прошу помощи в решении такой задачи: Требуется создать в домене 200 пользователей с заранее известными паролями и с установленными "флагами" - "Запретить смену пароля пользователем" и "Срок действия пароля не ограничен". Для этой цели я решил взять за основу следующий скрипт для одного пользователя:
 
Dim department  
Dim name
Dim Login
Dim pswr
Const ADS_UF_DONT_EXPIRE_PASSWD = &h10000
department = "ou=бухгалтерия"
name = "TestUser"
Login = "Юзер"
pswd = "12345"
 
Set objOU = GetObject("LDAP://"&department&",ou=Пользователи,dc=test,dc=local")
Set objUser = objOU.Create("user", "cn=" & name)  
 objUser.sAMAccountName = Login 'Login  
 objUser.GivenName = Login 'name  
 objUser.userPrincipalName = "" & Login & "@test.local" 'Учетная запись  
 objUser.displayName = Login 'Выводимое имя  
 objUser.SetInfo
   
 'Задаем пароль и включаем акаунт  
  objUser.SetPassword pswd 'Пароль  
  objUserFlags = objUser.Get("UserAccountControl")
  objPasswordExpirationFlag = objUserFlags OR ADS_UF_DONT_EXPIRE_PASSWD
  objUser.Put "UserAccountControl", objPasswordExpirationFlag
  objUser.SetInfo
 
пользователь создается и стоит галочка "Срок действия пароля не ограничен"
Добавляю строки:
  Const ADS_UF_PASSWD_CANT_CHANGE = &H40 'Вначале  
  objUser.Put "UserAccountControl", ADS_UF_PASSWD_CANT_CHANGE ' в третьем блоке
и флаги не устанавливаются. ((
 
И еще пара вопросов: на форумах встретил такую запись вызова состояния флагов: "objUser.Get("userFlags")" - это тоже самое, что и "objUser.Get("UserAccountControl")"?
и не совсем понятно зачем вообще нужна запись, точнее логическая операция:
objPasswordExpirationFlag = objUserFlags OR ADS_UF_DONT_EXPIRE_PASSWD?
Понимаю, что вопросы может и глупые, да и я не силен в программировании, а после гугла вопросов стало больше, чем ответов.

Всего записей: 46 | Зарегистр. 24-10-2006 | Отправлено: 23:23 01-11-2011
Sam13



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Господа программисты,
 
напишите пожалуйста пару строк скрипта для включения\отключения WiFi модема Zyxel через Telnet.
 
На вход нужен только пароль, комманды вкл\откл выглядят следующим образом
 
Wlan active 1
Wlan active 0
 
Заранее спасибо

Всего записей: 168 | Зарегистр. 16-03-2006 | Отправлено: 17:17 03-11-2011
Black_Lung



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zolivan
То логическая операция для установки флага Эта статья может будет полезна
 
 
А уменя такой вопрос:  бывает что скрипт запускаемый на удаленном компе зависает на часа 2 из-за проблемы с этим компом. Обычно на команде GetObject. что сделать чтобы подключение  завершалась сразу автоматически если в чем-то ошибка?
 
 

Всего записей: 275 | Зарегистр. 09-10-2008 | Отправлено: 15:08 08-11-2011
ComradG



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Black_Lung
On Error Resume Next или GoTo метка, как минимум, как максимум попробовать перехватить исключение, т.е. что-то вроде
Код:
If Err.Count <> 0 Then
  WScript.Echo "An error has been occured while processing."
  WScript.Quit 1
End If

 
NvvLazyTiger
камень прекновения - досовкская кодировка. то, что удалось написать работает с полпинка и только с юникодом (читай не работает в принципе). прости еще раз, что не смог помочь.

Всего записей: 2038 | Зарегистр. 05-07-2008 | Отправлено: 19:58 08-11-2011
litestayer

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите пожалуйста с парсингом!
Есть общий отчет по 100 объектам и есть список необходимых объектов.
Как выдрать из этого общего отчета только блоки/секции по объектам из имеющегося списка (тоесть название нужного обекта и текст под ним)?
Общий отчет в виде:
 
Объект 1
Текст
 
Объект 2
Текст
 
......
 
Объект 100
Текст

Всего записей: 2 | Зарегистр. 04-03-2009 | Отправлено: 13:38 14-11-2011
AndVGri

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
litestayer
Так, а то что нужно разобрать как выглядит (по блокам/секциям)? Или телепатия;)

Всего записей: 750 | Зарегистр. 14-12-2005 | Отправлено: 17:11 14-11-2011
litestayer

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Сам "текст" разбирать не надо. Его нужно брать целиком.
Под блоком иеется ввиду строка "Объект ..." и текст под ним (для каждого объекта свой текст).
Например, надо отобрать объекты 2 и 10 из общего отчета.
Результирующий отчет должен быть:
 
Объект 2  
Текст  
 
Объект 10  
Текст  

Всего записей: 2 | Зарегистр. 04-03-2009 | Отправлено: 18:21 14-11-2011
AndVGri

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
litestayer
Понятнее не стало Вот пример, как определить есть ли в строке входного файла признак объекта

Код:
 
Option Explicit
Dim pExp
 
Set pExp = New RegExp
pExp.Global = True
pExp.IgnoreCase = True
pExp.Pattern = "Объект [0-9]+"
 
If pExp.Test("Объект 23") Then
    WScript.Echo "Строка с объектом"
Else
    WScript.Echo "Строка данных объекта"
End If
 

Для конкретных номеров объектов можешь создать ещё один RegExp с Pattern = "Объект 2|10", а первым проверять выход из области данных 2 и 10
или использовать InStr(fileLine, "Объект 2") = 0 для обнаружения начала данных объекта 2

Всего записей: 750 | Зарегистр. 14-12-2005 | Отправлено: 03:13 15-11-2011
litestayer

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
AndVGri,
 
Спасибо, что уделяете мне время. Но как же правильно сформулировать?
Попробую еще так. Например в файле ниже надо оставить только 2 и 4 объекты.
Содержимое файла до обработки:
----------
Объект 1
абон 1
абон 2
итого 2
 
Объект 2
абон 1
итого 1
 
Объект 3
абон 1
итого 1
 
Объект 4
абон 1
итого 1
 
Содержимое файла после обработки:
-----------
Объект 2
абон 1
итого 1
 
Объект 4
абон 1
итого 1

Всего записей: 2 | Зарегистр. 04-03-2009 | Отправлено: 21:10 15-11-2011
kvazimodolsd

Редактировать | Цитировать | Сообщить модератору
AndVGri,
Я litestayer, форум почему-то перестал меня впускать(:, зашел под другим ником.
Спасибо, что уделяете мне время. Но как же правильно сформулировать?
Попробую еще так. Например в файле ниже надо оставить только 2 и 4 объекты.
Содержимое файла до обработки:
----------
Объект 1
абон 1
абон 2
итого 2
 
Объект 2
абон 1
итого 1
 
Объект 3
абон 1
итого 1
 
Объект 4
абон 1
итого 1
 
Содержимое файла после обработки:
-----------
Объект 2
абон 1
итого 1
 
Объект 4
абон 1
итого 1

Отправлено: 21:24 15-11-2011
AndVGri

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
litestayer
Извиняюсь, из-за сбоя на форуме не заметил пути и имена входного и выходного файла поменяйте

Код:
 
Option Explicit
Const ForReading = 1
Dim fso, inStream, outStream
Dim sLine, sKey, isWrite
Set fso = CreateObject("Scripting.FileSystemObject")
Set inStream = fso.OpenTextFile("c:\temp\inobj.txt", ForReading)
Set outStream = fso.CreateTextFile("c:\temp\outobj.txt", True)
isWrite = False
Do Until inStream.AtEndOfStream
    sLine = inStream.ReadLine
    sKey = LCase(Trim(sLine))
    If (sKey = "объект 2") Or (sKey = "объект 4") Then
        isWrite = True
    ElseIf InStr(sKey, "объект") > 0 Then
        isWrite = False
    End If
    If isWrite Then
        outStream.WriteLine(sLine)
    End If
Loop
inStream.Close: outStream.Close
 

Всего записей: 750 | Зарегистр. 14-12-2005 | Отправлено: 08:08 19-11-2011
bobojon



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Ребята, понадобилась ваша помощь!
Так как я в этом деле совсем уж чайник, прошу Вас помочь мне сделать очень легкий (думаю) для Вас скрипт.
Вот что у меня есть:
 
var WSHShell = WScript.CreateObject("WScript.Shell");
WSHShell.Run("E:\eksperiment\da\Google.exe",0);
 
после запуска появляется следующая ошибка: The system cannot find the file speciefied
 
А нужно всего лишь запустить файл (Google.exe)!
Заранее благодарен!

Всего записей: 53 | Зарегистр. 06-03-2008 | Отправлено: 15:27 21-11-2011
AndVGri

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
bobojon
\ в java начало управляющего символа (если не ошибаюсь), попробуй заменить на \\
"E:\\eksperiment\\da\\Google.exe

Всего записей: 750 | Зарегистр. 14-12-2005 | Отправлено: 16:33 21-11-2011
megamozg13



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

Всего записей: 313 | Зарегистр. 27-07-2004 | Отправлено: 16:50 21-11-2011
ComradG



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

Код:
("WScript.Shell").Run("e:\\exksperiment\\da\\google.exe")

P.S.может все таки отрыть отдельную ветку именно по JScript'у?

Всего записей: 2038 | Зарегистр. 05-07-2008 | Отправлено: 19:29 21-11-2011 | Исправлено: ComradG, 19:30 21-11-2011
Scaramanga



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Доброго времени суток. Задача следующего характера.
 
Нужно чтобы скрипт постоянно отслеживал доступность одного из ПК (невидимо для пользователя). Если Пк доступен (пингуется, пусть будет 192.168.1.1.) то на рабочем столе создается несколько ярлыков ярлык на определенные файлы (пусть c:\1.exe, c:\2.exe и т.п.),если ПК не доступен то этот ярлык удаляется, и снова ожидается доступность ПК
 
Заранее спасибо за помошь

Всего записей: 516 | Зарегистр. 24-04-2008 | Отправлено: 11:24 01-12-2011 | Исправлено: Scaramanga, 11:44 01-12-2011
Открыть новую тему     Написать ответ в эту тему

Страницы: 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