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

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

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

ShIvADeSt (12-07-2011 15:12): http://forum.ru-board.com/topic.cgi?forum=33&topic=11963#1  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112

   

ViSiToR



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
mistx 20:58 17-09-2008
Цитата:
куда мне данную функцию можно вставить в 1-й скрипт, чтобы после того как doc файлы будут найдены и будет записан отчет о их нахождении, производилось их конвертирование?

После будет посложнее (точнее помедленнее), можно во время поиска.
Функцию вставить в конец скрипта, а её вызов в «For Each» цикл...
 

Код:
 
....
For Each file In oRef
    f.Writeline file.Name & "," & file.FileSize & "," & ConvWMITime(file.CreationDate) & _
     "," & ConvWMITime(file.LastAccessed) & "," & ConvWMITime(file.LastModified)
     
    ConvertToRTF file.Name, Left(file.Name, Len(file.Name)-3) & "rtf"
Next
...
 

 
P.S
Не тестировал.

----------
ViSiToR a.k.a CreatoR
CreatoR это не ник, CreatoR это стиль жизни!

Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 01:02 18-09-2008 | Исправлено: ViSiToR, 01:07 18-09-2008
MIHMIH007



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
ViSiToR
тот скрипт который я привёл это к проге Thinstall для создания портативных программ. Но оказалось что здесь много общего)))))

Всего записей: 743 | Зарегистр. 05-12-2006 | Отправлено: 01:35 18-09-2008
mistx

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ViSiToR
расположил так  
 
функцию в конец скрипта (после wscript.quit)
цикл (после wscript.echo "Working ...."
f.Writeline "FilePath,Size(bytes),Created,LastAccessed,LastModified")
 
работает конечно медлено (да в принципе сойдет)
 
1. кстати как расшифровать команду
   ConvertToRTF ".\Test.txt", ".\Test.rtf"?
   никак не могу понять ее.
 
2. При конвертировании доковские файлы остаются.
    Как можно их убрать оставив только rtf?

Всего записей: 765 | Зарегистр. 13-01-2005 | Отправлено: 20:47 18-09-2008 | Исправлено: mistx, 20:49 18-09-2008
ViSiToR



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
mistx 20:47 18-09-2008
Цитата:
как расшифровать команду

Что там расшифровывать? первый параемтр это путь и имя входящего файла, второй это путь и имя исходного файла.
 

Цитата:
Как можно их убрать оставив только rtf?

 
 

Код:
....
For Each file In oRef
    f.Writeline file.Name & "," & file.FileSize & "," & ConvWMITime(file.CreationDate) & _  
     "," & ConvWMITime(file.LastAccessed) & "," & ConvWMITime(file.LastModified)
     
    ConvertToRTF file.Name, Left(file.Name, Len(file.Name)-3) & "rtf"
    fso.DeleteFile(file.Name)
Next
...


----------
ViSiToR a.k.a CreatoR
CreatoR это не ник, CreatoR это стиль жизни!

Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 00:10 19-09-2008
mistx

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

Всего записей: 765 | Зарегистр. 13-01-2005 | Отправлено: 08:19 19-09-2008
MIHMIH007



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Народ помогите плиз как преобразовать текстовой файл из вида например:
 
accessing-dwg-f-1.html
accessing_objec-1.html
automatic_loadi-1.html
board-1.cgi.htm
board-2.cgi.htm
board-3.cgi.htm
 
В вид:
 
"accessing-dwg-f-1.html" "accessing_objec-1.html" "automatic_loadi-1.html" "board-1.cgi.htm" "board-2.cgi.htm" "board-3.cgi.htm"  
 
Строчек может быть и больше 1000..... тут просто к примеру показано что нужно сделать что бы вместо вертикльного расположения названия файлов был горизонтальный и каждый файл был в ковычки взят и должен быть пробел между названиями.
Спасибо

Всего записей: 743 | Зарегистр. 05-12-2006 | Отправлено: 12:14 20-09-2008
ViSiToR



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
MIHMIH007 12:14 20-09-2008
Цитата:
нужно сделать что бы вместо вертикльного расположения названия файлов был горизонтальный и каждый файл был в ковычки взят и должен быть пробел между названиями

 
Так примерно:
 

Код:
Const ForReading = 1, ForWriting = 2
 
Set fso = CreateObject("Scripting.FileSystemObject")
sSrcFile = fso.GetAbsolutePathName(".\Test.txt")
 
Set oFile = fso.OpenTextFile(sSrcFile, ForReading, False)
Dim sLine, sNewFileContent
 
Do While oFile.AtEndOfStream <> True
    sLine = Trim(oFile.ReadLine)
    
    If sLine <> "" Then sNewFileContent = sNewFileContent & """" & sLine & """ "
Loop
 
oFile.Close
 
Set oFile = fso.OpenTextFile(sSrcFile, ForWriting, True)
oFile.Write RTrim(sNewFileContent) & VBCRLF
oFile.Close


----------
ViSiToR a.k.a CreatoR
CreatoR это не ник, CreatoR это стиль жизни!

Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 12:51 20-09-2008
maxema

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

Цитата:
Строчек может быть и больше 1000.....  

Наверно не слишком хорошо все это форматировать в память(в целях ее экономного использования), а потом одним разом писать в файл.  
Как бы подправить код, чтобы запись шла скажем по 20 форматированных строчек?

Всего записей: 16 | Зарегистр. 15-09-2008 | Отправлено: 19:55 20-09-2008
ViSiToR



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
maxema 19:55 20-09-2008
Цитата:
Наверно не слишком хорошо все это форматировать в память

Имхо, лучше (и быстрее) чем записывать в файл каждую строку, тем более что для записи в реальном времени придётся читать весь файл сразу и проходиться по массиву, что в принципе одно и тоже. Текущий метод быстрее будет.

----------
ViSiToR a.k.a CreatoR
CreatoR это не ник, CreatoR это стиль жизни!

Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 21:11 20-09-2008
NovaC

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

Всего записей: 95 | Зарегистр. 09-01-2008 | Отправлено: 17:13 21-09-2008
ViSiToR



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
NovaC 17:13 21-09-2008
Цитата:
vbs скрипт который бы  
 выводил размер папок и файлов начиная с заданной папки и с заданной глубиной

С заданной глубиной? это как?
Вот скрипт для получения размера указанного каталога включая все вложенные файлы и папки:
 

Код:
Set WshShell = WScript.CreateObject("WScript.Shell")
Set oFS = CreateObject("Scripting.FileSystemObject")
 
sPath = WshShell.ExpandEnvironmentStrings("%Temp%")
Set oDir = oFS.GetFolder(sPath)
 
MsgBox "Объем каталога [%Temp%]: " & GetDisplaySize(oDir.Size, 2), 64, "Результат"
 
 
Function GetDisplaySize(nBytes, iRound)
    aBytes = Array(" Bytes", " KB", " MB", " GB", " TB")
    For i = 4 To 1 Step -1
        If nBytes >= 1024 ^ i Then
            GetDisplaySize = Round(nBytes / 1024 ^ i, iRound) & aBytes(i)
            Exit Function
        End If
    Next
    GetDisplaySize = nBytes & " Bytes"
End Function


----------
ViSiToR a.k.a CreatoR
CreatoR это не ник, CreatoR это стиль жизни!

Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 17:48 21-09-2008
NovaC

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

Цитата:
С заданной глубиной? это как?

Например, если  
заданная папка : "C:\Program Files\"  
заданная глубина = 2,  
то скрипт показывает размер папки : "C:\Program Files\", затем перебирает и показывает размер всех папкок и файлов внутри папки "C:\Program Files\", а если глубина = 3 то соответственно идёт дальше и перебирает и показывает размер всех папкок и файлов из каждого каталога входящего в "C:\Program Files\" и так далее . . .
 
Вот так можно узнать размер папкок и файлов в заданном каталоге :

Код:
Set Root = FSO.GetFolder(WScript.Arguments.Item(0))
Set Folders = Root.SubFolders
Set Files = Root.Files
For Each F in Folders
  ...F.Size...
Next
For Each F in Files
  ...F.Size...
Next

но мне нужно выводить  
> размер папок и файлов начиная с заданной папки и с заданной глубиной

Всего записей: 95 | Зарегистр. 09-01-2008 | Отправлено: 05:01 23-09-2008 | Исправлено: NovaC, 05:06 23-09-2008
ViSiToR



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
NovaC 05:01 23-09-2008
Цитата:
мне нужно выводить  
  > размер папок и файлов начиная с заданной папки и с заданной глубиной

Ок, вот что получилось:
 

Код:
Set FSO = CreateObject("Scripting.FileSystemObject")
 
iRec_Level = 2
sPath = "C:\Program Files"
 
iSize = GetFilesSize(sPath, iRec_Level, 0)
sSize = GetDisplaySize(iSize, 2)
 
MsgBox "Size for [" & sPath & "] with recursion of [" & iRec_Level & "] level(s): " & sSize, 64, "Files Size"
 
Function GetFilesSize(sPath, iRecurse, iCntFlag)
    Set oRoot = FSO.GetFolder(sPath)
    Set oFiles = oRoot.Files
    Set oFolders = oRoot.SubFolders
    
    iRetSize = 0
    iCount = iCntFlag
    
    iCount = iCount + 1
    
    If iCount >= iRecurse + 1 Then
        GetFilesSize = 0
        Exit Function
    End If
    
    For Each oFile in oFiles
        iRetSize = iRetSize + oFile.Size
    Next
    
    For Each oDir in oFolders
        iRetSize = iRetSize + GetFilesSize(oDir.Path, iRecurse, iCount)
    Next
    
    GetFilesSize = iRetSize
End Function
 
Function GetDisplaySize(nBytes, iRound)  
    aBytes = Array(" Bytes", " KB", " MB", " GB", " TB")  
    For i = 4 To 1 Step -1  
        If nBytes >= 1024 ^ i Then  
            GetDisplaySize = Round(nBytes / 1024 ^ i, iRound) & aBytes(i)  
            Exit Function  
        End If  
    Next  
    GetDisplaySize = nBytes & " Bytes"  
End Function


----------
ViSiToR a.k.a CreatoR
CreatoR это не ник, CreatoR это стиль жизни!

Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 02:36 24-09-2008
dexs

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Суть задачи , надо disable и переносить юзеров в определёную OU , если ю3ер неактивен более 60 дней .

Всего записей: 27 | Зарегистр. 18-05-2006 | Отправлено: 17:44 25-09-2008
Minko_Lazer

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Хочу написать маленький vbs скрипт для запуска firefox + handycache, и хочу, чтобы после закрытия firefox закрывался и handycache.
Вот что-то типа этого:
dim wsfox, wshandy
 
set wsfox = CreateObject("WScript.Shell")
set wshandy = CreateObject("WScript.Shell")
 
set wsfox = wsfox.Exec("f:\Mozilla Firefox\firefox.exe /prefetch:1")
set wshandy = wshandy.Exec("f:\HandyCache\HandyCache.exe /prefetch:1")
 
Do While wsfox.Status = 0
     WScript.Sleep 500
Loop
wshandy.Terminate
 
set wsfox = nothing
set wshandy = nothing
 
Проблема: ошибка, выскакивающая после работы скрипта: "недопустимый дескриптор окна".
Я не силен в программировании, может кто поможет?

Всего записей: 13 | Зарегистр. 21-01-2007 | Отправлено: 21:30 29-09-2008
ViSiToR



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Minko_Lazer 21:30 29-09-2008
Цитата:
Вот что-то типа этого

 
А если так попробовать:
 

Код:
On Error Resume Next
 
set oShell = CreateObject("WScript.Shell")
 
set oFox = oShell.Exec("""f:\Mozilla Firefox\firefox.exe"" /prefetch:1")
set oHandy = oShell.Exec("""f:\HandyCache\HandyCache.exe"" /prefetch:1")
 
Do While oFox.Status = 0
    WScript.Sleep 500
Loop
 
oHandy.Terminate


----------
ViSiToR a.k.a CreatoR
CreatoR это не ник, CreatoR это стиль жизни!

Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 00:20 30-09-2008
Minko_Lazer

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ViSiToR
Спасибо! Действительно помогло. Все дело в строках:

Цитата:
On Error Resume Next  

После этого ошибок не вылетает

Всего записей: 13 | Зарегистр. 21-01-2007 | Отправлено: 20:23 30-09-2008
DangerousWulf

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Привет!  
Помогите написать скрипт выключающий удалённый компьютер  
 
написал что то подобное  
On Error Resume Next  
strComputer = "PLAST-BUH3"
UserName    = "Администратор"    
Password    = "1"
Set SWBemlocator = CreateObject("WbemScripting.SWbemLocator")
Set objWMIService = SWBemlocator.ConnectServer(strComputer,"\root\CIMV2",UserName,Password)
Set colItems = objWMIService.ExecQuery("Select * from Win32_OperatingSystem",,48)
For Each objItem in colItems
    objItem.Win32Shutdown(1)    
Next  
 
почему то не работает

Всего записей: 152 | Зарегистр. 16-03-2007 | Отправлено: 11:11 01-10-2008
DonkeyHottt

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

Всего записей: 104 | Зарегистр. 26-12-2004 | Отправлено: 14:09 03-10-2008
ViSiToR



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
DonkeyHottt 14:09 03-10-2008
Цитата:
как в vbs заставить активное окно переместиться в нужное место экрана?

Встроенными средствами никак.
 
Можно использовать AutoItX3.dll:
 

Код:
On Error Resume Next
 
'================== AutoItX3.Control Object Check & Register ==================
Set oShell = WScript.CreateObject("WScript.Shell")
Set oFS = WScript.CreateObject("Scripting.FileSystemObject")
 
AutoItX3_dll = ".\AutoItX3.dll"
 
If Not oFS.FileExists(AutoItX3_dll) Then
    MsgBox "AutoItX3.dll Not found." & vbCRLF & vbCRLF & "OK ==> EXIT", 16, "Error"
    WScript.Quit 0
End If
 
Set oAutoIt = WScript.CreateObject("AutoItX3.Control")
 
If Not IsObject(oAutoIt) Then
    oShell.Exec "regsvr32.exe /S " & oFS.GetFile(AutoItX3_dll).Path
    
    Set oAutoIt = WScript.CreateObject("AutoItX3.Control")
    
    If Not IsObject(oAutoIt) Then
        MsgBox "Can not register the AutoItX3.Control object." & vbCRLF & vbCRLF & "OK ==> EXIT", 16, "Error"
        WScript.Quit 0
    End If
End If
'================== AutoItX3.Control Object Check & Register ==================
 
 
 
'================================ Script Part ================================
 
'Title
sTitle = "[CLASS:Notepad;TITLE:Безымянный]"
 
'Positions
xPos = 100
yPos = 200
Width = 350
Height = 250
 
'Run Notepad
iPID = oAutoIt.Run(oShell.ExpandEnvironmentStrings("%WinDir%") & "\Notepad.exe")
oAutoIt.WinWait sTitle, "", 5
 
'Set some text
oAutoIt.ControlSetText sTitle, "", "Edit1", "Test with AutoItX3.Control object"
 
'Activate the window
oAutoIt.WinActivate sTitle
 
'Change window positions
oAutoIt.WinMove sTitle, "", xPos, yPos, Width, Height
 
'Wait 2 seconds
oAutoIt.Sleep 3000
 
'Set closing text
oAutoIt.ControlSetText sTitle, "", "Edit1", ""
oAutoIt.ControlCommand sTitle, "", "Edit1", "EditPaste", "Now we close this window"
 
For i = 0 To 5
    'Wait 1 second
    oAutoIt.Sleep 1000
 
    oAutoIt.ControlCommand sTitle, "", "Edit1", "EditPaste", "."
Next
 
'Close the Notepad
oAutoIt.ProcessClose iPID
 
'================================ Script Part ================================


----------
ViSiToR a.k.a CreatoR
CreatoR это не ник, CreatoR это стиль жизни!

Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 19:19 03-10-2008 | Исправлено: ViSiToR, 19:23 03-10-2008
   

Страницы: 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 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Программирование "удобняшек" на VBScript
ShIvADeSt (12-07-2011 15:12): http://forum.ru-board.com/topic.cgi?forum=33&topic=11963#1


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru