none
Barra de progreção RRS feed

  • Pergunta

  • Ba galera..

    Estou trabalhando em um script que realiza varias tarefas nas estações, e o mesmo esta quebrado por varios WScript.sleep 10000, afim de dar tempo para cada etapa seja realizada sem encavalar os processos porem quando o mesmo é executado como qualquer vbs, ele fica la em processos e fica executando ate finalizar, como o script ja ta meio grande, ele demora unpouquinho para finalizar e em quanto ele esta sendo executado, gostaria de gerar algo como uma caixinha aonde existisse uma barra de progreção, e a mesma vai sendo completada conforme o script vai passando etapa por etapa, alguem ja fez algo assim ou sabe como fazer..

    Valeu galera.
    quinta-feira, 27 de agosto de 2009 02:30

Respostas

  • Olá,

    Essa linha você pode apagar...

    Quanto a lógica, o segredo é você colocar o seu código dentro do loop. Exemplo:

    arrAcoes = "sub1,sub2,sub3"
    arrAcoes = SPlit(arrAcoes,",")
    acoes = 0

    Do While percentComplete <= 100
       wscript.sleep 500
       pb.Update(percentComplete)
       percentComplete = percentComplete + 33

       'aqui ao invés de usar wscript.echo, você utiliza a funcao mesmo.
       wscript.echo arrAcoes(acoes)
       acoes = acoes + 1
    Loop
    wscript.sleep 3000
    pb.Close()
    wscript.quit


    Até mais,

    Jesiel

    Obs.: Se útil, classifique




    • Marcado como Resposta Marcelo TI segunda-feira, 31 de agosto de 2009 10:50
    sexta-feira, 28 de agosto de 2009 02:32

Todas as Respostas

  • Olá,

    Dá uma olhada no link abaixo:

    http://www.northatlantawebdesign.com/index.php/2009/07/16/simple-vbscript-progress-bar/


    Usando o exemplo, eu fiz um script (listar pastas vazias) Para você usar como exemplo:

    Dim pb
    Dim percentComplete
    Set pb = New ProgressBar
    percentComplete = 0
    pb.SetTitle("Executando tarefas no computador")
    pb.SetText("Aguarde o término das operações")
    pb.Show()


    Do While percentComplete <= 100

       'coloque aqui seu código
       '======================================================

       Set FileSystem = WScript.CreateObject("Scripting.FileSystemObject")
       Set OutPutFile = FileSystem.CreateTextFile("log.txt", True)

       OutPutFile.WriteLine "PASTAS  EM: " & now
     
       strComputer = "."
       Set objWMIService = GetObject("winmgmts:" _
           & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
       set FSo = CreateObject("Scripting.FileSystemObject")
       Set objFolder = FSO.GetFolder("C:\teste")
       Set colfolders = objFolder.Subfolders
      
       For Each objFolder in colFolders
      
       set folder = FSO.getFolder(objFolder.path)
      
       if folder.Subfolders.count > 0 then
         for each SubFolder in folder.Subfolders
          BuscaArquivo SubFolder
         next
       Else
       BuscaArquivo objFolder.path
       end if
      
       Next
      
       OutPutFile.Close

    Loop
    wscript.sleep 3000
    pb.Close()
    wscript.quit


    Sub BuscaArquivo(strPasta)

    '*****************************************************************************************
    '*****************************************************************************************
    'ADICIONE ESSA PARTE EM CADA ETAPA DO SCRIPT QUE VOCÊ QUER QUE A BARRA DE PROGRESSO AVANCE
    '*****************************************************************************************
    '*****************************************************************************************
    wscript.sleep 500
    pb.Update(percentComplete)
    percentComplete = percentComplete + 10
    '*****************************************************************************************
    '*****************************************************************************************


    set strpasta = FSO.GetFolder(strPasta)

    if strPasta.SubFolders.Count = 0 And strPasta.Files.Count = 0 Then
       OutPutFile.WriteLine "PASTA VAZIA : " & strPasta.path
    Elseif strPasta.Files.Count > 0 Then
       For each subFiles in strPasta.Files
          OutPutFile.WriteLine "ARQUIVO EXISTENTE : " & subFiles.path
       Next
    End if

    End Sub








    '============================================================================================

    ' RETIRADO DO SITE: http://www.northatlantawebdesign.com/index.php/2009/07/16/simple-vbscript-progress-bar/


    Class ProgressBar
    Private m_PercentComplete
    Private m_CurrentStep
    Private m_ProgressBar
    Private m_Title
    Private m_Text
    Private m_StatusBarText

    'Initialize defaults
    Private Sub ProgessBar_Initialize
    m_PercentComplete = 0
    m_CurrentStep = 0
    m_Title = "Progresso"
    m_Text = ""
    End Sub

    Public Function SetTitle(pTitle)
    m_Title = pTitle
    End Function

    Public Function SetText(pText)
    m_Text = pText
    End Function

    Public Function Update(percentComplete)
    m_PercentComplete = percentComplete
    UpdateProgressBar()
    End Function

    Public Function Show()
    Set m_ProgressBar = CreateObject("InternetExplorer.Application")
    'in code, the colon acts as a line feed
    m_ProgressBar.navigate2 "about:blank" : m_ProgressBar.width = 315 : m_ProgressBar.height = 40 : m_ProgressBar.toolbar = false : m_ProgressBar.menubar = false : m_ProgressBar.statusbar = false : m_ProgressBar.visible = True
    m_ProgressBar.document.write "<body Scroll=no style='margin:0px;padding:0px;'><div style='text-align:center;'><span name='pc' id='pc'>0</span></div>"
    m_ProgressBar.document.write "<div id='statusbar' name='statusbar' style='border:1px solid blue;line-height:10px;height:10px;color:blue;'></div>"
    m_ProgressBar.document.write "<div style='text-align:center'><span id='text' name='text'></span></div>"
    End Function

    Public Function Close()
    m_ProgressBar.quit
    End Function

    Private Function UpdateProgressBar()
    If m_PercentComplete = 0 Then
    m_StatusBarText = ""
    End If
    For n = m_CurrentStep to m_PercentComplete - 1
    m_StatusBarText = m_StatusBarText & "|"
    m_ProgressBar.Document.GetElementById("statusbar").InnerHtml = m_StatusBarText
    m_ProgressBar.Document.title = n & "% Completado : " & m_Title
    m_ProgressBar.Document.GetElementById("pc").InnerHtml = n & "% Completado : " & m_Title
    wscript.sleep 10
    Next
    m_ProgressBar.Document.GetElementById("statusbar").InnerHtml = m_StatusBarText
    m_ProgressBar.Document.title = m_PercentComplete & "% Completado : " & m_Title
    m_ProgressBar.Document.GetElementById("pc").InnerHtml = m_PercentComplete & "% Completado : " & m_Title
    m_ProgressBar.Document.GetElementById("text").InnerHtml = m_Text
    m_CurrentStep = m_PercentComplete
    End Function

    End Class
    '===============================================================================================================




    Até mais,

    Jesiel

    Obs.: Se útil, classifique



    quinta-feira, 27 de agosto de 2009 12:12
  • Ba Jesiel

    Show muito bom é o que eu necessito porem estou com 3 problemas..

    o primeiro, copiando o que vc me mandou, ele fica com a janela aberta e a barra não anda..

    o segundo, fui no site e peguei o exemplo deles legal ele anda e executa a barra para 2 dos 5 processos, e depois da um erro nessa linha 42 ( A variável de objeto não foi definida: 'm_ProgressBar' codigo 800A005B...

    terceiro, compreender essa logica para saber como colocar o mesmo no meio das 800 linhas do meu vbs hehehe

    Obrigado amigo no aguardo.
    sexta-feira, 28 de agosto de 2009 01:53
  • Olá,

    Essa linha você pode apagar...

    Quanto a lógica, o segredo é você colocar o seu código dentro do loop. Exemplo:

    arrAcoes = "sub1,sub2,sub3"
    arrAcoes = SPlit(arrAcoes,",")
    acoes = 0

    Do While percentComplete <= 100
       wscript.sleep 500
       pb.Update(percentComplete)
       percentComplete = percentComplete + 33

       'aqui ao invés de usar wscript.echo, você utiliza a funcao mesmo.
       wscript.echo arrAcoes(acoes)
       acoes = acoes + 1
    Loop
    wscript.sleep 3000
    pb.Close()
    wscript.quit


    Até mais,

    Jesiel

    Obs.: Se útil, classifique




    • Marcado como Resposta Marcelo TI segunda-feira, 31 de agosto de 2009 10:50
    sexta-feira, 28 de agosto de 2009 02:32
  • Ok Jesiel

    Vou tentar ja volto para lhe dizer.

     

    sexta-feira, 28 de agosto de 2009 21:08
  • Ba Jesiel

    To batendo cabeça aqui hehehe mais valeu cara vc deu o caminho qualquer grito, heheheh mais baixinho como sempre pede um grande amigo meu pois ele fala... grite baixinho pois eu posso estar como dor de cabeça.....hehehe.....

    Abraço...
    segunda-feira, 31 de agosto de 2009 10:51
  • Grande Jesiel,
    me diga uma coisa, estou tentando aprender um pouco... tenho um botao "instala" q chama a funcao pra copiar um arquivo....
    quero botar esta barra de progressao nesta sub,
    agora.. o problema eh q tou fazendo hta, com o option explicit habilitado, como eu posso adaptar este codigo para funcionar?
    agradeço desde ja...
    lembrando q eu ja fiz algumas alteracoes.. mas a barrinha nao anda normalmente.. soh uns 10% pelo q percebi... e soh funciona qndo ta com o option explict desabilitado
    quarta-feira, 7 de outubro de 2009 16:59