Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Программирование "удобняшек" на VBScript (Часть 2)

Автор: sovadak
Дата сообщения: 25.10.2013 09:53
AndVGri
Спасибо за скрипт!
Да, все получилось и работает!
Автор: maK
Дата сообщения: 02.11.2013 14:20
Баталий Владимир Изучаем язык VBScript (pdf)
Автор: idlenlazy
Дата сообщения: 03.11.2013 04:46
Родной майкрософтский мануал
http://www.microsoft.com/en-us/download/details.aspx?id=2764
Автор: makarei
Дата сообщения: 08.11.2013 20:59
Доброе время суток,
Нашел (сам я не программист) следующий скрипт, чтобы он создал список URL с инкриментацией в них номера страницы:


Код: Dim i
For i = 0 to 100
Response.Write("http://www.mysite.com/" & i & ".html")
Next
Автор: makarei
Дата сообщения: 09.11.2013 10:39
А тем временем... - нашел решение на PowerShell.
Для тех кому интерестно/нужно/полезно:


Код: 1..100 | % {“http://www.mysite.com/$_.html”} | out-file process.txt
Автор: idlenlazy
Дата сообщения: 11.11.2013 15:00
makarei

Пусть и запоздало. В вашем случае содержимое файла должно быть таким:


Код: Dim i
For i = 0 to 100
WScript.Echo "http://www.mysite.com/" & i & ".html"
Next
Автор: Sphinx114
Дата сообщения: 12.11.2013 02:14
makarei

Код: set file = CreateObject("Scripting.FileSystemObject").CreateTextFile("1.txt")
For i = 1 to 100
file.WriteLine("http://www.mysite.com/" & i & ".html")
Next
Автор: biffick
Дата сообщения: 16.11.2013 01:45
Возможно ли написать скрипт,который будет изменять текст в .txt Документе каждые 20 секунд?
Например vbs скрипт... очень нужно.
Автор: mikeab
Дата сообщения: 18.11.2013 10:04
Уважаемые форумчане!
Возможно ли написать скрипт,который будет изменять все даты (3 штуки) на заданную папку!!!
на файл не нужно!

здесь в примере только чтение.
Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder("C:\Test")
Str = vbNullString
Str = Str & "Дата создания - " & Folder.DateCreated & vbCrLf
Str = Str & "Дата последнего доступа - " & Folder.DateLastAccessed & vbCrLf
Str = Str & "Дата последней модификации - " & Folder.DateLastModified & vbCrLf
MsgBox Str

или подскажите где искать (если знаете про возможность изменения даты\времени НА ПАПКУ!).
везде только о чтении дат и изменении .ModifyDate но на файл.
с датой на папку у меня пока не получается
Автор: sovadak
Дата сообщения: 10.12.2013 10:10
Ребята, нужен скрипт на изменение содержимого .ini файла.
Скрипт должен открыть файл и изменить там одну строчку после "ServerUrl="
Вот все содержимое этого ini файла:

Код: [Acct01]
LoginAtStartup=Yes
Name=Почта
ServerUrl=http://main:3000/WorldClient.dll
User=user@domain
UserDisplayName=Иванов.А.А.
SavePassword=Yes
Password=*******
Reconnect=Yes
ReconnectTries=10
ProxyServer=
ProxyPort=0
ConnectionType=0
Автор: sergarbru
Дата сообщения: 10.12.2013 10:41

Цитата:
Ребята, нужен скрипт на изменение содержимого .ini файла.
Скрипт должен открыть файл и изменить там одну строчку после "ServerUrl="
Вот все содержимое этого ini файла:

Может быть это http://www.cyberforum.ru/cmd-bat/thread635153.html
Автор: sovadak
Дата сообщения: 10.12.2013 11:11
И вроде уже нашел работающее решение:

Код: InName = "c:\ComAgentWC.ini"
Str1 = "ServerUrl="

Set InArg=WScript.Arguments

EqStr1 = InArg(0)

Set FSO = CreateObject("Scripting.FileSystemObject")
Set InFile = FSO.OpenTextFile(InName, 1, False)

AllStr = InFile.ReadAll
InFile.Close

AllStr = Replace(AllStr, Chr(10), "")
Mass = Split(AllStr, Chr(13))
i1 = LBound(Mass)
i2 = UBound(Mass)

Call ModiIniSub(Mass, i1, i2, Str1, EqStr1)

Set InFile = FSO.OpenTextFile(InName, 2, False)
For i = i1 To i2
If i <> i2 Then
InFile.WriteLine Mass(i)
Else
InFile.Write Mass(i)
End If
Next
InFile.Close


Sub ModiIniSub(Mass, i1, i2, Stroka, EqStroka)
LStroka = Len(Stroka)
For i = i1 To i2
If Mid(Mass(i), 1, LStroka) = Stroka Then
Mass(i) = Stroka + EqStroka
Exit For
End If
Next
End Sub
Автор: Sphinx114
Дата сообщения: 10.12.2013 20:45
sovadak, попробуйте так:

Код: file = WScript.CreateObject("WScript.Shell").SpecialFolders("AppData") & "\ComAgent\WCIM\ComAgentWC.ini"
With WScript.CreateObject("Scripting.FileSystemObject")
    If .FileExists(file) And WScript.Arguments.Count = 1 Then
        With .OpenTextFile(file, 1)
            strAll = .ReadAll()
            .Close
        End With
        With .OpenTextFile(file, 2)
            Set objRegExp = WScript.CreateObject("VBScript.RegExp")
            objRegExp.Pattern = "ServerUrl=.*(?=\r|$)"
            .Write objRegExp.Replace(strAll, "ServerUrl=" & WScript.Arguments(0))
            .Close
        End With
    Else
        WScript.Quit 1
    End If
End With
Автор: rosalin
Дата сообщения: 19.12.2013 20:50
ребята помогите найти скрипт vbs,

Выводящий информацию в файл о пользователях в домене , важный критерий параметр реестра ProfileImagePath

Тоесть после переименовывания пользователя в домене хотелось бы еще переименовывать папки профилей
Автор: yrkrus
Дата сообщения: 20.12.2013 21:42
Доброго всем времени суток, помогите со скриптом, необходимо на рабочем столе пользователя, а в идеале во всем С:\ искать файл team*.exe и выдавать сообщение найдено или нет, додумался только как до рабочего стола добраться, а как по маске искать файлик никак не могу...

Код:
Option Explicit
Dim sUserProfile
Dim oShell, oFSO

' Создание объекта оболочки
Set oShell = CreateObject("WScript.Shell")
' Создание объекта файловой системы
Set oFSO = CreateObject("Scripting.Filesystemobject")
' Получение пути к профилю
sUserProfile = oShell.ExpandEnvironmentStrings("%USERPROFILE%")
' Проверка существования файла
If oFSO.FileExists(sUserProfile & "\Desktop\team.exe") = True Then
WScript.Echo "File Exist!"
Else
WScript.Echo "File Not Exist!"
End If
Автор: urodliv
Дата сообщения: 01.01.2014 23:32
Уважаемые знатоки VBS. Нужна ваша помощь и пояснение.
[more=Вот тут кусок моего скрипта]' Получаем доступ к ФС
set fso = CreateObject("Scripting.FileSystemObject")

' Эта штука нужна для работы с датой модификации файла
Set osa = CreateObject("Shell.Application")

' Каталог баз
set intFl = fso.GetFolder("d:\\test\\")

' Получим вчерашнюю дату и преобразуем её в нужный нам вид, чтобы получить
' независимый от настроек результат сравнения
ytday = now()-1
ytday = year(ytday) & "-" & month(ytday) & "-" & day(ytday)

set spFl = intFl.SubFolders    ' Получаем список каталогов баз

For Each bs in spFl
' Получим доступ к каталогу из объекта Shell
set objFl = osa.NameSpace(bs)

' Найдём файл базы данных
bdFi = objFl.ParseName("1Cv8.1CD")

' Получим дату изменения файла базы данных в нужном виде для сравнения
dlmFl = year(bdFi.ModifyDate) & "-" & month(bdFi.ModifyDate) & "-" & day(bdFi.ModifyDate)

' Если дата изменения файла базы данных равна вчерашнему числу, то
' эту базу данных будем обрабатывать
If dlmFl=ytday Then
    ...........
End If

' А теперь надо вернуть дату модификации файла базы данных в исходное состояние
bdFi.ModifyDate = ytday
Next[/more]

На помеченную строку ругается интерпретатор: "Объектная переменная не задана". Судя по всему не воспринимается передача переменной bs.
Верно ли я думаю, и как исправить эту ошибку?
Автор: Laserje18
Дата сообщения: 26.01.2014 19:20
Помогите, как добавить к текстовому файлу первую строку, т.е. содержимое файла должно переместиться на одну строку вниз, а в первую строку нужно добавить информацию.

Код: Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.OpenTextFile("test.txt",8,True,0)
f.WriteLine Now()
f.Close
Автор: Alex_Piggy
Дата сообщения: 26.01.2014 19:34
Доброе время
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
Автор: Laserje18
Дата сообщения: 26.01.2014 21:15
Alex_Piggy
Спасибо, работает идеально.
Автор: Scaramanga
Дата сообщения: 28.01.2014 07:59
Доброго времени суток
Необходимо решение для следующей задачи.
Есть определенный логон скрипт забирающий файл из общей сетевой папки, ставить в ГПО ожидание нельзя, так как пользователи ругаются на долгую загрузку системы, да и в принципе этого и не нужно.
Как в самом скрипте прописать ожидание доступности сетевой папки и при доступности запуск остального тела скрипта?
Заранее спасибо
Автор: msmih
Дата сообщения: 30.01.2014 20:03
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()
Автор: msmih
Дата сообщения: 01.02.2014 08:09
Alex_Piggy
Буду признателен за еще одну подсказку как в полученном результате с помощью XMLHTTP.responseText вывести/сохранить только последнюю строку? что-то подсказывает, что это функция split, но не могу ее грамотно прописать
Автор: Alex_Piggy
Дата сообщения: 01.02.2014 09:24
Доброе время, 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
Автор: msmih
Дата сообщения: 01.02.2014 10:40
Alex_Piggy

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

немного не так. может быть коряво, но
.Paragraphs.Add.Range.Text=XMLHTTP.responseText
какой вариант вернее?
Автор: gale
Дата сообщения: 03.02.2014 11:34

Код: set devmgr_show_nonpresent_devices=1
start devmgmt.msc
Автор: msmih
Дата сообщения: 07.02.2014 04:13
Возникло еще пару вопросов. Буду признателен за подсказки.
Парсю сайт.
Информация на сайте расположена в следующем порядке:
<тег> инфа </тег>
<тег> инфа </тег>
<тег> инфа </тег>
Из парсинга первой пары тегов получаю информацию в виде Переменная_1 и Переменная_2.
Из-за не очень сильных познаний, не соображу как организовать цикл. Чтобы шел переход к следующему блоку тегов. И цикл был пока теги не оканчиваются.
Автор: Alex_Piggy
Дата сообщения: 07.02.2014 08:08
Доброе время, 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
Автор: msmih
Дата сообщения: 07.02.2014 17:54
Доброго времени суток, Alex_Piggy
Во-первых спасибо!
Парсю очень непрофессионально. Страница в чистом виде html. Но использую Msxml.
делаю запрос с сайта. А далее с помощью split обрезаю текст по тегам со всех сторон.
дальше передаю текст в word и вычищаю с помощью vba все лишнее.
Завтра попробую с вашим вариантом разобраться.

Автор: msmih
Дата сообщения: 08.02.2014 09:06
Доброго времени суток,Alex_Piggy
Немного модифицировал ваш пример и как итог моя задумка работает.
Буду признателен за подсказку с Patern.
Как это расшифровывается "<(тег)>(.*?)</\1>", или как в этом случае скрипт просматривает текст ? у себя я прописал жесткий тег.

И еще вопрос, но к другой задумке. Есть большой xml файл. Где можно посмотреть примеры как парсить его с помощью XMLHTTP.responseXML.getElementByTagName?
Автор: Alex_Piggy
Дата сообщения: 08.02.2014 10:07
Доброе время, msmih
Посмотрите описание работы с XML на www.script-coding.com DOM XML.
Объект RegExp. Pattern - скобки здесь - выделение фрагментов. "\1" - ссылка на первый фрагмент - "тег". ".*?" - "минимальное количество любых символов". То есть получается - найти и вывести любые символы, которые расположены между <тег> и </тег>. Если тег содержит дополнительную информацию, то лучше "<(тег).*?>(.*?)</\1>"
Я не знаю, какую литературу посоветовать по изучению регулярных выражений...

Страницы: 12345678910111213141516171819202122232425

Предыдущая тема: Помогите новичку в C++


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.