Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Single Post  Topic: Автоматизированное копирование 
Author Message
kefirux



PostPosted: Fri Dec 12, 2008 00:46    Post subject: Reply with quote

ну вот сделал версию без участия Тотала (простите старого еретика)
большая проблема в том что ну вот не нашёл я в ВБ не то что прогресс бара, но даже модального окна. сделал прогресс бар с подгрузкой IE

тут я вспомнил о такой вещи как многопоточность ) потому что надо както чтобы один поток копировал а другой отображал ход действий. но я это решил тем что запускается второй ВБскрипт из первого

основная прога:
Code:

'Option Explicit
Dim WshShell
Dim RetCode
Dim fso
Dim StartFolder
Dim str
Dim M1
Dim FItem
Dim Answer
Dim curFolder, curFolder2

Set WshShell = CreateObject("WScript.Shell")

str=InputBox("Введите имя папки","Имя Папки",Date,vbOK)
Set fso = CreateObject("Scripting.FileSystemObject")

If Not fso.FolderExists("X:\- ПАКИ ФОТОСЕТОВ\" & str) Then
fso.CreateFolder("X:\- ПАКИ ФОТОСЕТОВ\" & str)
End If


StartFolder = "F:/Dcim"
If fso.FolderExists(StartFolder) = False Then
MsgBox "какаято ошибка!", vbCritical
WScript.Quit
End If


Set curFolder = fso.GetFolder(StartFolder)

RetCode = WshShell.Run("""G:\KefiR\Pack\VB\ProgressBar.vbs"" " & str , 1, False)
For Each FItem In curFolder.SubFolders
   fso.CopyFile FItem.Path & "\*.*", "X:\- ПАКИ ФОТОСЕТОВ\" & str
Next

WScript.Sleep 1000
WScript.Quit


второй поток (ProgressBar.vbs)
Code:

Option Explicit
Dim fso
Dim StartFolder
Dim curFolder, curFolder2
Dim RetCode, objArgs
Dim gdocProgressBar 'Required global declaration for status bar document
Dim goieProgressBar 'Required global declaration for Internet Explorer object
Set gdocProgressBar = Nothing
Set goieProgressBar = Nothing


Set objArgs = WScript.Arguments
Set fso = CreateObject("Scripting.FileSystemObject")


StartFolder = objArgs(0)
MsgBox StartFolder
StartFolder = "X:\- ПАКИ ФОТОСЕТОВ\" & StartFolder

Set curFolder2 = fso.GetFolder("F:\Dcim")
Set curFolder = fso.GetFolder(StartFolder)

Do
    Set curFolder = fso.GetFolder(StartFolder)
    ProgressBar curFolder.Size/(curFolder2.Size/100)
    WScript.Sleep 100
   
Loop While curFolder.Size <> curFolder2.Size

answer = msgbox(StartFolder & " " & curFolder2.Size & " => " & curFolder.Size & vbNewLine & "=========================" & vbNewLine & "Запустить Lightroom?", vbOkCancel)
if answer=vbOk then RetCode = WshShell.Run("""E:\Program Files\Adobe\Adobe Photoshop Lightroom 2\lightroom.exe"" """ & StartFolder & """", 0, False)
ProgressBar -1

WScript.Quit




Sub ProgressBar(intPercent)
'Requires global declaration for gdocProgressBar and goieProgressBar
'Creates an html page showing a status bar.
'intPercent must be between 0 and 100.
'If intPercent is out of range, the status bar is shut down.

   'Create the status bar window
   If gdocProgressBar Is Nothing Then
      If ((Cint(intPercent) >= 0) And (Cint(intPercent) <= 100)) Then
         Set goieProgressBar = CreateObject("InternetExplorer.Application")
         goieProgressBar.Offline = True
         goieProgressBar.AddressBar = False
         goieProgressBar.Height = 100
         goieProgressBar.Width = 250
         goieProgressBar.MenuBar = False
         goieProgressBar.StatusBar = False
         goieProgressBar.Silent = True
         goieProgressBar.ToolBar = False
         goieProgressBar.Navigate "about:blank"
         Do While goieProgressBar.Busy
            WScript.Sleep 100
         Loop
         'On Error Resume Next
         Set gdocProgressBar = Nothing
         Do Until Not gdocProgressBar Is Nothing
            WScript.Sleep 100
            Set gdocProgressBar = goieProgressBar.Document
         Loop
         gdocProgressBar.Open
         gdocProgressBar.Write "<html><head><title>"
         gdocProgressBar.Write "Copy"
         gdocProgressBar.Write "</title></head><body><center>"
         gdocProgressBar.Write "<TABLE width=200 border=3 frame=box><tr><td>"
         gdocProgressBar.Write "<TABLE id=status width=0 border=0 cellpadding=0 cellspacing=0 bgcolor=#FFFFFF>"
         gdocProgressBar.Write "<tr><td>&nbsp</td></tr></table></td></tr></table></center></body></html>"
         gdocProgressBar.Close
         goieProgressBar.Visible = True         
      Else
         Exit Sub
      End If
   End If

   'Close the status bar window
   If Not gdocProgressBar Is Nothing Then
      If ((Cint(intPercent) < 0) Or (Cint(intPercent) > 100)) Then
         goieProgressBar.Visible = False
         Set gdocProgressBar = Nothing
         goieProgressBar.Quit
         Set goieProgressBar = Nothing
         Exit Sub
      End If
   End If

   'Update the status bar window
   If Cint(intPercent) = 0 Then
      gdocProgressBar.all.status.width = "1%"
      gdocProgressBar.all.status.bgcolor = "#FFFFFF"
   Else
      gdocProgressBar.all.status.width = Cstr(Cint(intPercent)) & "%"
      gdocProgressBar.all.status.bgcolor = "#339955"
   End If

End Sub   


класс прогресс бара честно украл на просторах интернета
View user's profile Send private message Send e-mail Visit poster's website ICQ Number


Powered by phpBB © 2001, 2005 phpBB Group