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

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

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Да это в общем готовый скрипт, может потребует каких-то изменений дерево ваших папок.
Const baseFolder = "D:\FTP\Camera\" 'задаёт путь к папке, корневой для папок камер
For Each camFolder In fso.GetFolder(baseFolder).SubFolders
цикл по подпапкам корневой (насколько понял, в корневой находятся подпапки камер)
For Each dateFolder In camFolder.SubFolders
цикл по подпапкам дат для текущей папки камеры, остальное как у вас.

Всего записей: 750 | Зарегистр. 14-12-2005 | Отправлено: 08:40 23-10-2013 | Исправлено: AndVGri, 08:42 23-10-2013
sovadak



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

Цитата:
Да это в общем готовый скрипт, может потребует каких-то изменений дерево ваших папок.  

Тоесть я создам .txt файлик, скоприрую туда:
 
Public Sub DeleteOldDateFolders()  
    Const baseFolder = "D:\FTP\Camera\"  
    Dim fso, camFolder, dateFolder  
    Set fso = CreateObject("Scripting.FileSystemObject")  
    For Each camFolder In fso.GetFolder(baseFolder).SubFolders  
        For Each dateFolder In camFolder.SubFolders  
            If DateDiff("D", dateFolder.DateLastModified, Now) > 2 Then dateFolder.Delete  
        Next  
    Next  
End Sub  
 
Поменяю расширению на .vbs  и будет мне счастье?
Пробовал. Не работает.
 

Цитата:
Const baseFolder = "D:\FTP\Camera\" 'задаёт путь к папке, корневой для папок камер  
For Each camFolder In fso.GetFolder(baseFolder).SubFolders  
цикл по подпапкам корневой (насколько понял, в корневой находятся подпапки камер)  
For Each dateFolder In camFolder.SubFolders  
цикл по подпапкам дат для текущей папки камеры, остальное как у вас.  

Поняли вы все верно. Есть папка Camera в ней подпапки камер - Parking, External, Internal и др., а в них папки с датами, создаются автоматически и в нимх создаются файлы с записями. Нам нужно, чтобы удалялись именно папки с датами. Папки камер разумеется должны остаться, потому что папки с датами все удалять нельзя, а лишь устаревшие. Таким образом будет постоянная определена глубина архива записей.
Я понимаю что вы написали, но не понимаю именно в какое место вставлять ваш код:

Код:
Public Sub DeleteOldDateFolders()  
    Const baseFolder = "D:\FTP\Camera\"  
    Dim fso, camFolder, dateFolder  
    Set fso = CreateObject("Scripting.FileSystemObject")  
    For Each camFolder In fso.GetFolder(baseFolder).SubFolders  
        For Each dateFolder In camFolder.SubFolders  
            If DateDiff("D", dateFolder.DateLastModified, Now) > 2 Then dateFolder.Delete  
        Next  
    Next  
End Sub  


Всего записей: 111 | Зарегистр. 18-09-2009 | Отправлено: 13:43 23-10-2013
AndVGri

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Думаю, что проблема в том, что вы забыли вызвать процедуру, то есть содержимое файла с расширением vbs должно быть

Код:
 
Option Explicit
 
DeleteOldDateFolders
 
Public Sub DeleteOldDateFolders()  
    Const baseFolder = "D:\FTP\Camera\"  
    Dim fso, camFolder, dateFolder  
    Set fso = CreateObject("Scripting.FileSystemObject")  
    For Each camFolder In fso.GetFolder(baseFolder).SubFolders  
        For Each dateFolder In camFolder.SubFolders  
            If DateDiff("d", dateFolder.DateLastModified, Now) > 2 Then dateFolder.Delete  
        Next  
    Next  
End Sub
 

Протестировал.. создал папку d:\ftp\camera в ней подпапки cam1, cam2, cam3, ну, и в них подпапки 1, 2, 3. Удалилось. Правда, мне пришлось поменять DateDiff("d" на DateDiff("s"

Всего записей: 750 | Зарегистр. 14-12-2005 | Отправлено: 08:58 25-10-2013 | Исправлено: AndVGri, 08:58 25-10-2013
sovadak



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
AndVGri
Спасибо за скрипт!
 Да, все получилось и работает!

Всего записей: 111 | Зарегистр. 18-09-2009 | Отправлено: 10:53 25-10-2013
karakurt2



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

Всего записей: 733 | Зарегистр. 06-12-2003 | Отправлено: 14:35 27-10-2013 | Исправлено: karakurt2, 15:08 27-10-2013
maK



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Баталий Владимир Изучаем язык VBScript (pdf)

Всего записей: 5637 | Зарегистр. 19-12-2003 | Отправлено: 15:20 02-11-2013
idlenlazy

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Родной майкрософтский мануал
http://www.microsoft.com/en-us/download/details.aspx?id=2764

Всего записей: 159 | Зарегистр. 05-01-2009 | Отправлено: 06:46 03-11-2013
makarei



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Доброе время суток,
Нашел (сам я не программист) следующий скрипт, чтобы он создал список URL с инкриментацией в них номера страницы:
 

Код:
Dim i
For i = 0 to 100
   Response.Write("http://www.mysite.com/" & i & ".html")
Next

 
На выходе должно получаться:
 
http://www.mysite.com/1.html
http://www.mysite.com/2.html
http://www.mysite.com/3.html
...
http://www.mysite.com/100.html
 
Опять же таки нашел подсказку как сделать, чтобы вывод происходил в текстовый файл, но ничего не выходит, файл получатся пустым:
 

Код:
cscript.exe //NoLogo "C:\script\my.vbs" >"C:\script\output.txt"

 
Подскажите пожалуйста в чем проблема?
 
Спасибо!

Всего записей: 1127 | Зарегистр. 27-03-2007 | Отправлено: 22:59 08-11-2013
makarei



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А тем временем... - нашел решение на PowerShell.
Для тех кому интерестно/нужно/полезно:
 

Код:
1..100 | % {“http://www.mysite.com/$_.html”} | out-file process.txt

Всего записей: 1127 | Зарегистр. 27-03-2007 | Отправлено: 12:39 09-11-2013
idlenlazy

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

Код:
Dim i
For i = 0 to 100
   
WScript.Echo "http://www.mysite.com/" & i & ".html"
Next

Всего записей: 159 | Зарегистр. 05-01-2009 | Отправлено: 17:00 11-11-2013 | Исправлено: idlenlazy, 17:03 11-11-2013
Sphinx114



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

Код:
set file = CreateObject("Scripting.FileSystemObject").CreateTextFile("1.txt")
For i = 1 to 100
file.WriteLine("http://www.mysite.com/" & i & ".html")
Next

На bat проще:

Код:
echo off
(for /l %%i in (1,1,100) do echo http://www.mysite.com/%%i.html) > 2.txt

Всего записей: 1201 | Зарегистр. 26-03-2011 | Отправлено: 04:14 12-11-2013
biffick



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Возможно ли написать скрипт,который будет изменять текст в .txt Документе каждые 20 секунд?
Например vbs скрипт... очень нужно.

Всего записей: 619 | Зарегистр. 15-06-2011 | Отправлено: 03:45 16-11-2013
mikeab



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Уважаемые форумчане!
Возможно ли написать скрипт,который будет изменять все даты (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 но на  файл.
с датой на папку у меня пока не получается

Всего записей: 6 | Зарегистр. 03-04-2006 | Отправлено: 12:04 18-11-2013 | Исправлено: mikeab, 12:13 18-11-2013
sovadak



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ребята, нужен скрипт на изменение содержимого .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

 
Не пинайте, рыскал долго, но почему-то именно изменение одной строчки, без изменения ее расположения сделать скрипт не удалось. Получилось только дописать в этот файл строчку. А нужно изменить существующую.
 
Спасибо.

Всего записей: 111 | Зарегистр. 18-09-2009 | Отправлено: 12:10 10-12-2013 | Исправлено: sovadak, 12:15 10-12-2013
sergarbru



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

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

Может быть это http://www.cyberforum.ru/cmd-bat/thread635153.html

Всего записей: 18 | Зарегистр. 23-01-2011 | Отправлено: 12:41 10-12-2013
sovadak



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

Код:
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

Запускаю через цмд:

Код:
script.vbs " указываю новый путь"

Но есть одно большое но. Файлик который нужно изменить, лежит в: %appdata%\ComAgent\WCIM\
Если я так указываю путь, но скрипт не выполняется, т.е. использоватьь переменную нельзя. Нужно допилить существующий скрипт, кто может, помогите плиз.
sergarbru, по-мойму это не совсем то, из написанного выше.
 
Как уже можно было догадаться, скрипт будет применяться к пользователям домена, поэтому использование этой переменной обязательно.
 
Немного прикинул, подумал, и написал следующее:

Код:
Set WshShell = WScript.CreateObject("WScript.Shell")
 
strAppData = WSHShell.SpecialFolders("AppData")    
    Str1 = "ServerUrl="  
 
    Set InArg=WScript.Arguments
 
    EqStr1 = InArg(0)
     
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set InFile = FSO.OpenTextFile(strAppData+"\ComAgent\WCIM\ComAgentWC.ini", 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(strAppData+"\ComAgent\WCIM\ComAgentWC.ini", 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
 

ПЫ.СЫ. Я не программер, поэтому возможно получилось слишком сложно, однако у меня работает. Буду тестить дальше. Поправьте если где-то не прав.

Всего записей: 111 | Зарегистр. 18-09-2009 | Отправлено: 13:11 10-12-2013 | Исправлено: sovadak, 13:27 10-12-2013
Sphinx114



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
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

Запускать так:
script.vbs "новый путь"
 
Заменит одну строку с ServerUrl (регистр важен)
Если файл не существует или колич аргументов не равно 1, то сразу выходит с exit code 1
Кодировка файла должна быть виндоусовская (разрывы строк в виде \r\n)
Проверял на win xp

Всего записей: 1201 | Зарегистр. 26-03-2011 | Отправлено: 22:45 10-12-2013
king_stiven

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

Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 17:54 18-12-2013 | Исправлено: king_stiven, 19:02 18-12-2013
rosalin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ребята помогите найти скрипт vbs,  
 
Выводящий информацию в файл о пользователях в домене , важный критерий параметр реестра ProfileImagePath
 
Тоесть после переименовывания пользователя в домене хотелось бы еще переименовывать папки профилей

Всего записей: 2584 | Зарегистр. 15-04-2003 | Отправлено: 22:50 19-12-2013
yrkrus



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Доброго всем времени суток, помогите со скриптом, необходимо на рабочем столе пользователя, а в идеале во всем С:\ искать файл 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

Всего записей: 379 | Зарегистр. 30-11-2010 | Отправлено: 23:42 20-12-2013
Открыть новую тему     Написать ответ в эту тему

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