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

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

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Собрал еще один скрипт, он создает ярлыки на изменившиеся файлы, но имена ярлыков почему-то кракозябрами.
И как бы теперь сделать так, чтобы он не учитывал временные файлы офисного пакета (маска .~*)
 

Код:
 
Dim strFolder, dstFolder, File, objFSO, objFolder, WSHShell
   
 strFolder = "U:\shef"
 dstFolder = "C:\newfiles"
   
 Set objFSO = CreateObject("Scripting.FileSystemObject")
 Set WSHShell = WScript.CreateObject("WScript.Shell")
 Set objFolder = objFSO.GetFolder(strFolder)  
 Set colFiles = objFolder.Files
 
 For Each objFile In colFiles  
   File = objFile.ShortName  
   Doit File  
 Next  
   
 ShowSubFolders(objFolder)  
 Sub ShowSubFolders(objFolder)  
   Set colFolders = objFolder.SubFolders  
   For Each objSubFolder In colFolders  
     Set colFiles = objSubFolder.Files  
     For Each objFile In colFiles  
         File = objFile.ShortName  
         Doit File  
     Next  
     ShowSubFolders(objSubFolder)  
   Next  
 End Sub  
 
 Function Doit(File)
     On Error Resume Next
     If (Now - objFile.DateLastModified) < 1 Then
              Set MyShortcut = WSHShell.CreateShortcut(dstFolder & "\" & File & ".lnk")
              MyShortcut.TargetPath = objFile
              MyShortcut.WorkingDirectory = objFolder
              MyShortcut.WindowStyle = 4
              MyShortcut.Save
     End If
 End Function
 

 
update: нужно как-то иначе передавать имя файла вот сюда Set MyShortcut = WSHShell.CreateShortcut(dstFolder & "\" & File & ".lnk")
 
update 2: проблема решилась заменой в File = objFile.ShortName на objFile.Name
осталось не учитывать временные файлы

Всего записей: 4 | Зарегистр. 23-08-2011 | Отправлено: 12:01 30-08-2011 | Исправлено: JangooFett, 17:09 30-08-2011
gap5



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите, как реализовать скрипт по отключению всех локальных юзеров (чтобы работали только доменные)?
 
Через CLI есть команда
 
net user administrator \active:no
 
Но вариант net user * \active:no не прокатывает...

Всего записей: 1033 | Зарегистр. 30-05-2006 | Отправлено: 12:03 07-09-2011
ComradG



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
gap5
в смысле отключить гостя?

Код:
Set objGuest = GetObject("WinNT://atl-ws-01/Guest")
objGuest.AccountDisabled = True
objGuest.SetInfo
если для всех разом, используй For Each.

Всего записей: 2038 | Зарегистр. 05-07-2008 | Отправлено: 19:40 07-09-2011
ygoda52

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите пожалуйста как с помощью vbscript скрипта открывать по очереди страницы в IE и находить там фразу "код ответ 0"
Спасибо

Всего записей: 63 | Зарегистр. 28-08-2010 | Отправлено: 16:58 25-09-2011
megamozg13



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Всем привет. нарисовал свой маленький HTA скриптик "файл-браузер".
все файлы будут только - видео (фильмы и мультяшки). написал на замену довольно-таки тяжелому софту "xbmc", задача простая нужно - меню со списком файлов и каталогов в папке(ах). клик - файл открылся в проигрывателе. всё управление хочу заточить на три кнопки "вверх" "вниз" и "ввод" (они эмулируются пультом д/у).
 
осталось решить два вопроса:
1) что бы ссылки не меняли цвет после "клика"
2) можно ли сделать видимый курсор, чтобы было видно
подскажите кто что знает...
 
Подробнее...

Всего записей: 313 | Зарегистр. 27-07-2004 | Отправлено: 17:09 30-09-2011 | Исправлено: megamozg13, 17:10 30-09-2011
ComradG



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

Цитата:
1) что бы ссылки не меняли цвет после "клика"
дык а каскадные таблицы стилей на что? в хэде всталяешь пару:
Код:
<style type="text/css">
</style>
и там указываешь стили для ссылок, но это уже ворос, скорее к HTML'у больше относится, так что я расписывать и оффтопить на эту тему не буду.

Цитата:
2) можно ли сделать видимый курсор, чтобы было видно
теоретически.
 
ygoda52

Цитата:
Подскажите пожалуйста как с помощью vbscript
лучше юзать JScript, а поиск некоторой фразы осуществлять с помощью Dictionary.

Всего записей: 2038 | Зарегистр. 05-07-2008 | Отправлено: 19:25 30-09-2011
megamozg13



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
ComradG
спасибо, буду копать дальше.
 
Докрутил с цветами ссылок и получилось сделать подобие курсора.
вдруг кому пригодится или интересно
 
осталось только прикрутить управление не мышкой а клавиатурой, кто бы на вел на мысль куда копать(тут своих идей пока нет совсем)?

Всего записей: 313 | Зарегистр. 27-07-2004 | Отправлено: 09:39 01-10-2011 | Исправлено: megamozg13, 13:28 01-10-2011
ygoda52

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

Цитата:
Подскажите пожалуйста как с помощью vbscript
лучше юзать JScript, а поиск некоторой фразы осуществлять с помощью Dictionary.
 

А можно где нибудь глянуть конкректный пример
Спасибо

Всего записей: 63 | Зарегистр. 28-08-2010 | Отправлено: 19:26 01-10-2011 | Исправлено: ygoda52, 19:26 01-10-2011
ComradG



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ygoda52
писать целый скрипт не стану, но укажу векторы от которых следует плясать.
1)прежде, чем работать с IE, нужно создать на него ссылку:

Код:
Set objIE = CreateObject("InternetExplorer.Application")

2)теперь можно будет открыть страницу:

Код:
objIE.Visible = True
objIE.Navigate "http://mysite.org/"
то есть, как ты понимаешь, метод Navigate позволяет открывать страницы. кстати, если требуется открыть страницу в новой вкладке, то код целиком будет выглядеть как:
Код:
Const newTab = &h0800
Set objIE = CreateObject("InternetExplorer.Application")
objIE.Visible = True
objIE.Navigate "http://mysite.org/", CLng newTab

3)чтобы IE открывал страницы по списку, можно поступить двумя способами:
а)создать массив данных из набора страниц в самом скрипте;
б)вынести список в отдельный файл;
какой из этих вариантов ближе, решать тебе.
4)поиск определенных слов осуществляется также двумя способами:
а)создание ссылки на объект Dictionary;
б)регекспы;
последний вариант более прост.
советую также почитать по теме InternetExplorer.Application, Dictionary и RegExp в VBScript. если будут вопросы, постараюсь ответить.
 
megamozg13

Цитата:
кто бы на вел на мысль куда копать
а что именно ты хочешь? эмулировать нажатие клавиш или получить полный контроль над сабжем? если первой, смотри в сторону SendKeys, если второе, то как мимнимум это WinAPI.

Всего записей: 2038 | Зарегистр. 05-07-2008 | Отправлено: 20:23 01-10-2011
ygoda52

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ComradG
 
Спасибо.
Будем изучать.
Правда в иностранных языках не силён.
Если не трудно несколько строк по использованию поиска определенных слов  
с использованием ссылки на объект Dictionary

Всего записей: 63 | Зарегистр. 28-08-2010 | Отправлено: 15:14 02-10-2011 | Исправлено: ygoda52, 15:19 02-10-2011
megamozg13



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Вот докрутил файл-браузер  
Объясню немного:
1) в заголовке две постоянные ссылки на "корневые" папки Фильмы и Мультики
2) управление (кнопки) "вверх" "вниз" это скрол экрана, "влево" "вправо" переход курсора по ссылкам, "интер" вызов ссылки.
3) кнопка "текущая папка" при вызове отрабатывает как выход из текущей папки на верх к корню диска.
4) вызов программы, пока закоментирован(кому надо - раскоментировать и указать точный путь к просмотрщику на вашем компе), скрипт ожидает заверешения программы просмотра.
 
PS: кстати "Media Player Classic" из комплекта "K-Lite Codec Pack" позволяет
1) при открытии файла автоматически переходить в полноэкранный режим.
2) во время проигрывания быть всегда наверху.
3) автоматически закрываться после проигрывания.

Всего записей: 313 | Зарегистр. 27-07-2004 | Отправлено: 11:31 03-10-2011 | Исправлено: megamozg13, 12:10 03-10-2011
octopus 23

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите как с помощью vbscript создать дерево каталогов в текущем каталоге по текстовому файлу - для примера такого содержания:
 
Фамилия1\Магазин1\Январь
Фамилия1\Магазин1\Февраль
Фамилия1\Магазин1\Март
Фамилия1\Магази2\Январь
Фамилия1\Магазин2\Февраль
Фамилия1\Магазин2\Март
 
Фамилия2\Магазин1\Январь
Фамилия2\Магазин1\Февраль
Фамилия2\Магазин1\Март
Фамилия2\Магази2\Январь
Фамилия2\Магазин2\Февраль
Фамилия2\Магазин2\Март
 
нашел на форуме только как выгрузить дерево в файл - а тут появилась задача сделать обратное.
 
Спасибо

Всего записей: 3 | Зарегистр. 07-02-2009 | Отправлено: 17:31 16-10-2011
OSADJAN

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А BAT-ник, не подойдёт

Код:
 
FOR /F "delims=~" %%f in (твой.txt) DO MD "%%f"
 

Всего записей: 18 | Зарегистр. 12-02-2011 | Отправлено: 22:13 16-10-2011
ComradG



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
OSADJAN
дядь, по батникам отдельная ветка есть, и если хочется блестнуть широкими познаниями в батописании, то лучше кидай ссылку на пост в соответсвующей ветке.
 
octopus 23
вот тебе код, от которого следует танцевать.
Код:
Const ForReading = 1
 
Set objArgs = WScript.Arguments
 
If objArgs.Count <> 1 Then
  WScript.Echo "Не указан файл-список."
  WScript.Quit 1
Else
  Set objFSO = CreateObject("Scripting.FileSystemObject")
 
  ParseListFile objArgs(0)
 
  Set objFSO = Nothing
End If
 
Function CreateFolder(strFolder)
  objFSO.CreateFolder(strFolder)
End Function
 
Function ParseListFile(strFile)
  Set strContent = objFSO.OpenTextFile(strFile, ForReading)
 
  Do Until strContent.AtEndOfStream
    strName = strContent.ReadLine
    CreateFolder strName
  Loop
 
  strContent.Close
 
  Set strContent = Nothing
End Function
допилить, полагаю, сумеешь. там можно и рекурсию, ежели чего замутить и условия дополнительные подставить.

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

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ComradG спасибо большое за код, я пока только учусь - т.е. напильник еще не очень большой - но думаю справлюсь

Всего записей: 3 | Зарегистр. 07-02-2009 | Отправлено: 01:41 18-10-2011
OSADJAN

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

Цитата:
дядь, по батникам отдельная ветка есть

Принял к сведению...
Заинтересовался
Цитата:
дерево каталогов в текущем каталоге по текстовому файлу - для примера такого содержания:
 
Фамилия1\Магазин1\Январь
Фамилия1\Магазин1\Февраль
Фамилия1\Магазин1\Март
Фамилия1\Магази2\Январь
Фамилия1\Магазин2\Февраль
Фамилия1\Магазин2\Март
 
Фамилия2\Магазин1\Январь
Фамилия2\Магазин1\Февраль
Фамилия2\Магазин1\Март
Фамилия2\Магази2\Январь
Фамилия2\Магазин2\Февраль
Фамилия2\Магазин2\Март  

сделать скрипт именно по этому тексту - но дело продвинулось только до папок первой вложенности, а дальше пишет  

Цитата:
Ошибка:    Недопустимое имя или номер файла
Код:    800A0034

Ну, например:

Код:
Const ForReading = 1
  Set objFSO = CreateObject("Scripting.FileSystemObject")
  Set objFile = objFSO.OpenTextFile("C:\Users\OSA\Desktop\Create\твой.txt", ForReading)
 
Do Until objFile.AtEndOfStream
    strLine = objFile.Readline
    strLine = Trim(strLine)
 
    If Len(strLine) > 0 Then
        strNewLine= strLine & vbCrLf
    End If
 
MyArray = Split(strNewLine, "\", -1, 1)  
fl1 = MyArray(0)  
fl2 = MyArray(1)  
fl3 = MyArray(2)
 
If objFSO.FolderExists(fl1) Then
    WScript.Echo "Папка " & fl1 &_
     " уже существует"
     Else
    WScript.Echo "Создаём " & fl1
      objfso.CreateFolder fl1
End If
If objFSO.FolderExists(fl1 & "\" & fl2) Then
    WScript.Echo "Папка " & fl2&_
     " уже существует"
     Else
    WScript.Echo "Создаём " & fl2
      objfso.CreateFolder fl1 & "\" & fl2
End If
If objFSO.FolderExists(fl1 & "\" & fl2 & "\" & fl3) Then
    WScript.Echo "Папка " & fl3&_
     " уже существует"
     Else
    WScript.Echo "Создаём " & fl3
  objfso.CreateFolder fl1 & "\" & fl2 & "\" & fl3
End If
Loop
 

Если есть время, подскажи, пожалуйста в какую сторону "плясать".

Цитата:
там можно и рекурсию, ежели чего замутить

Не понятно, только как
 
 

Всего записей: 18 | Зарегистр. 12-02-2011 | Отправлено: 13:04 18-10-2011 | Исправлено: OSADJAN, 13:20 18-10-2011
AndVGri

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
OSADJAN
Посмотри ветку, буквально несколькими страницами назад ComradG писал метод для создания подпапок по заданному пути. За один вызов нельзя создать всё дерево подпапок пути.

Всего записей: 750 | Зарегистр. 14-12-2005 | Отправлено: 14:02 18-10-2011
OSADJAN

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

Цитата:
AndVGri

Уже дошло, спасибо.
 octopus 23

Код:
 
Const ForReading = 1
'---------------------
'узнаём местонахождения
path = Replace(WScript.ScriptFullName, WScript.ScriptName, "")  
strRoot=path
 
  Set objFSO = CreateObject("Scripting.FileSystemObject")
  Set objFile = objFSO.OpenTextFile("C:\Users\OSA\Desktop\Create\твой.txt", 1)
  Set objFolder=objFSO.GetFolder(strRoot)
  Set colFolders=objFolder.SubFolders
'--------------
'Читаем файл
Do Until objFile.AtEndOfStream
    strLine = objFile.Readline
    strLine = Trim(strLine)
    If Len(strLine) > 0 Then
        strNewLine = strLine & "\" & vbCrLf
    End If
strPath = strNewLine
 
MakeDir(strPath)
Loop
 
Function MakeDir(strPath)
  Dim strParentPath, theFSO
  Set theFSO = CreateObject("Scripting.FileSystemObject")
  On Error Resume Next
  strParentPath = theFSO.GetParentFolderName(strPath)
  If Not theFSO.FolderExists(strParentPath) Then MakeDir strParentPath
  If Not theFSO.FolderExists(strPath) Then theFSO.CreateFolder strPath
  On Error Goto 0
  MakeDir = theFSO.FolderExists(strPath)
End Function
 

Можно и без рекурсии, исправляю свой предыдущий код(всё дело было в недостающем слэше):

Код:
Const ForReading = 1
  Set objFSO = CreateObject("Scripting.FileSystemObject")
  Set objFile = objFSO.OpenTextFile("C:\Users\OSA\Desktop\Create\твой.txt", ForReading)
 
Do Until objFile.AtEndOfStream
    strLine = objFile.Readline
    strLine = Trim(strLine)
    If Len(strLine) > 0 Then
        strNewLine= strLine & "\" & vbCrLf
    End If
'Разделяем строки на части с разделителем \  
MyArray = Split(strNewLine, "\", -1, 1)  
fl1 = MyArray(0)  
fl2 = MyArray(1)  
fl3 = MyArray(2)
'Создаём
  If objFSO.FolderExists(fl1) Then
  Else
     objfso.CreateFolder fl1
  End If
  If objFSO.FolderExists(fl1 & "\" & fl2) Then
  Else
     objfso.CreateFolder fl1 & "\" & fl2
  End If
  If objFSO.FolderExists(fl1 & "\" & fl2 & "\" & fl3) Then
  Else
     objfso.CreateFolder fl1 & "\" & fl2 & "\" & fl3  
  End If
Loop

 
 

Всего записей: 18 | Зарегистр. 12-02-2011 | Отправлено: 14:59 18-10-2011 | Исправлено: OSADJAN, 15:15 18-10-2011
ComradG



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
OSADJAN
ты проделал хорошую работу, молодец, но позволь указать на ошибки. код можно значительно сократить в конструкциях If... Then...
Код:
If Not objFSO.FolderExists(...) Then
  objFSO.CreateFolder ...
End If
а еще короче код бы записался, если бы ты создал функцию-валидатор, а не мучался с дублированием If... Then...

Всего записей: 2038 | Зарегистр. 05-07-2008 | Отправлено: 17:37 18-10-2011 | Исправлено: ComradG, 17:39 18-10-2011
OSADJAN

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ComradG. Спасибо...Мне ещё многому надо учиться. За указанные ошибки - отдельное спасибо.
И ещё... Может это будет выглядеть нахально, но всё-таки

Цитата:
если бы ты создал функцию-валидатор

Будет время, пожалуйста, напиши пример... У меня с функциями отношения почти на уровне "Copy-Paste"

Всего записей: 18 | Зарегистр. 12-02-2011 | Отправлено: 19:52 18-10-2011 | Исправлено: OSADJAN, 20:01 18-10-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