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 

Автоматизированное копирование
Goto page Previous  1, 2
 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
kefirux



Joined: 09 Dec 2008
Posts: 20

Post (Separately) Posted: Thu Dec 11, 2008 00:14    Post subject: Reply with quote

Volniy
кстати спасибо за кусок кода копирования, это толчок к созданию
этого самого окошка) всё представляю как сделать кроме отображения скорости передачи
Back to top
View user's profile Send private message
kefirux



Joined: 09 Dec 2008
Posts: 20

Post (Separately) Posted: Thu Dec 11, 2008 00:20    Post subject: Reply with quote

о, чёто я туплю. надож просто посчитать сколько он скопировал за одну секунду. так что это тоже можно сказать сделанно. хотя это уже не под формат форума Smile
Back to top
View user's profile Send private message
kefirux



Joined: 09 Dec 2008
Posts: 20

Post (Separately) Posted: 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   


класс прогресс бара честно украл на просторах интернета
Back to top
View user's profile Send private message
kefirux



Joined: 09 Dec 2008
Posts: 20

Post (Separately) Posted: Fri Dec 12, 2008 17:37    Post subject: Reply with quote

я полазил везде и понял что это не выполняемо )
поэтому я написал свою версию на полноценном языке:



причём если нужно кому, могу код кинуть и сам exe,
так как она универсальная, я её запускаю из ВБскрипта, а во входящих параметрах указывается два пути "откуда" и "куда"
но оно не копирует! оно просто следит за размерами этих папок и высчитывает прогресс
Back to top
View user's profile Send private message
taravasya



Joined: 27 Mar 2010
Posts: 38

Post (Separately) Posted: Sat Sep 18, 2010 01:27    Post subject: Reply with quote

kefirux
Мне пригодился бы такой код... Rolling Eyes
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander All times are GMT + 4 Hours
Goto page Previous  1, 2
Page 2 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group