none
Mostrar o que está sendo executado em um script RRS feed

  • Pergunta

  • Boa noite pessoal.

    Primeiramente gostaria muito de agradecer o espaço do technet que ajuda muitos atuantes da área de T.I.

    Pois é de grande valor de  conhecimento e troca de informações. Mas vamos lá ..

    Eu tenho um script de backup que faz cópia de todo o banco de dados da empresa. Como o processo é muito demorado e grande não consigo saber como está o andamento e  acompanhando o processo de cópia , gostaria de saber se tem alguma forma de o script ficar sendo mostrado na tela, um parâmetro de como está o processo ,,exe. Quantos % de cópia ou quais os arquivos estão sendo copiados ou até mesmo o tempo previsto para finalização do processo.

    Se puderem me ajudar agradeceria bastante ...

    o meu backup é executado assim:

    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set WshShell=CreateObject("Wscript.Shell")
    
    dNow = Now
    yyyy = Right(Year(dNow), 4)
    mt = Right("00" &Month(dNow), 2)
    dd = Right("00" &Day(dNow), 2)
    hh = Right("00" &Hour(dNow), 2)
    nn = Right("00" &Minute(dNow), 2)
    ss = Right("00" &Second(dNow), 2)
    NewFolder = "F:\BACKUP_ADMIN\" & "BACKUP_ADMIN " & dd & "-" & mt & "-" & yyyy & "." & hh & "-" & nn & "\"
    objFSO.CreateFolder NewFolder
    
    ObjFSO.copyfolder "D:\RD_ADMIN\ADMIN\admin_compactado", NewFolder , true
    
    
    objFSO.DeleteFile "D:\RD_ADMIN\ADMIN\admin_compactado\*.rar"


    OBRIGADO


    JOSÉ ANTÔNIO DUARTE



    sábado, 22 de junho de 2013 21:58

Respostas

  • José Antônio,

    Eu prefiro ensinar do que fazer pra você, mas já que está dificil...

    'Fiz apenas uma modificacao no seu script: colocar a pasta raiz do backup
    'em uma variavel (facilita o meu teste) e tambem uma variavel com os arquivos de origem
    strRaizBackup  = "F:\BACKUP_ADMIN\"  'Aqui é a pasta destino, ainda será criada uma subpasta
    strPastaBackup = "D:\RD_ADMIN\ADMIN\admin_compactado"			'Aqui é o que será copiado (origem)
    
    'Aqui começa o seu script, fiz apenas uma modificacao (newfolder=...) e exclui as duas ultimas linhas
    
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set WshShell=CreateObject("Wscript.Shell")
    
    dNow = Now
    yyyy = Right(Year(dNow), 4)
    mt = Right("00" & Month(dNow), 2)
    dd = Right("00" & Day(dNow), 2)
    hh = Right("00" & Hour(dNow), 2)
    nn = Right("00" & Minute(dNow), 2)
    ss = Right("00" & Second(dNow), 2)
    'A linha abaixo eu modifiquei, agora usa variavel setada no inicio do script
    NewFolder = strRaizBackup & "BACKUP_ADMIN " & dd & "-" & mt & "-" & yyyy & "." & hh & "-" & nn & "\"
    objFSO.CreateFolder NewFolder
    
    'Até aqui é o seu script (ele apenas criou a pasta de destino) ===========================================
    
    'Agora começa a cópia com progresso =================
    
    Const FOF_CREATEPROGRESSDLG = &H0&
    ParentFolder = NewFolder 'Aqui é configurado a pasta de destino
    Set objShell = CreateObject("Shell.Application")
    Set objFolder = objShell.NameSpace(ParentFolder)
    objFolder.CopyHere strPastaBackup, FOF_CREATEPROGRESSDLG 'Aqui realiza a cópia.
    
    'Aqui acabou a cópia =================
    
    'Esta sua linha não precisa mais, já que a cópia já aconteceu.
    'ObjFSO.copyfolder "D:\RD_ADMIN\ADMIN\admin_compactado", NewFolder , true
    
    'A linha abaixo vc pode deixar
    objFSO.DeleteFile "D:\RD_ADMIN\ADMIN\admin_compactado\*.rar"

    Veja que não tem nenhum bicho de 7 cabeças, é apenas colocar o código no lugar certo, hoje eu consigo ver isto fácil, mas apanhei muito, se não tentar não aprende.

    Scripts não tem muito segredo, eu mesmo escrevo pouca coisa do zero, na maior parte do tempo é juntar dois exemplos de código e fazer com que eles conversem, como neste caso. Era apenas uma questão de substituir a parte que vc copiava o diretório e preencher corretamente os parametros com dados que você já dispunha.Veja como alterei apenas duas palavras do código original.


    Fábio de Paula Junior

    quinta-feira, 27 de junho de 2013 01:54
    Moderador

Todas as Respostas

  • José Antonio,

    Repare que durante a execução do scripts o script fica "travado" (regra geral, pode haver exceção que eu não conheço) na linha que ele está executando então não é possivel obter informações durante este periodo. Exemplo: Quando vc usa a linha objFSO.copyfolder..., enquanto a cópia não finaliza vc não consegue fazer mais nada no script, não tem como saber a quantas anda a cópia.

    No caso de cópia de arquivos existe uma possibilidade de usar um outro objeto para cópia (vc está usando o Scripting.FileSystemObject), é o objeto shell.application, porém você também não terá controle sobre status, ele vai exibir a tela de cópia de arquivos padrão do Windows, que talvez já seja o suficiente pra você.

    Ref.:

    Folder.CopyHere method

    http://msdn.microsoft.com/en-us/library/windows/desktop/bb787866(v=vs.85).aspx


    Fábio de Paula Junior

    domingo, 23 de junho de 2013 01:25
    Moderador
  • Fabio bom dia.

    Acho que resolveria sim.

    Mas como ficaria o meu script com esta alteração?

    Desde já agradeço

    segunda-feira, 24 de junho de 2013 12:03
  • Com o robocopy tem a opção /ETA que mostra tempo total e tempo restante para copia.

    Mas aí teria que fazer um .bat.


    Warley

    segunda-feira, 24 de junho de 2013 16:12
  • Aqui tem bem explicado.

    Copying Folders by Using the Shell Folder Object

    http://technet.microsoft.com/en-us/library/ee176633.aspx

    Se nao conseguir envie seu novo script que eu tento ajudar.


    Fábio de Paula Junior

    segunda-feira, 24 de junho de 2013 17:23
    Moderador
  • Fábio boa tarde.

    tentei várias vezes aqui e não consigo .. sempre apresenta a mensagem que

    " o objeto não dá suporte para a propriedade ou método :

    'objFolder.CopyHere'

    código:800A01B6

    será que poderia me ajudar ?

    o meu código que funciona  é esse , porém sem modo visual.

    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set WshShell=CreateObject("Wscript.Shell")

    dNow = Now
    yyyy = Right(Year(dNow), 4)
    mt = Right("00" &Month(dNow), 2)
    dd = Right("00" &Day(dNow), 2)
    hh = Right("00" &Hour(dNow), 2)
    nn = Right("00" &Minute(dNow), 2)
    ss = Right("00" &Second(dNow), 2)
    NewFolder = "F:\BACKUP_ADMIN\" & "BACKUP_ADMIN " & dd & "-" & mt & "-" & yyyy & "." & hh & "-" & nn & "\"
    objFSO.CreateFolder NewFolder

    ObjFSO.copyfolder "D:\RD_ADMIN\ADMIN\admin_compactado", NewFolder , true


    objFSO.DeleteFile "D:\RD_ADMIN\ADMIN\admin_compactado\*.rar"

    desde já agradeço Fábio

    segunda-feira, 24 de junho de 2013 18:41
  • Coloca aqui o código que vc tentou com o link que te passei, eu tento ver onde está errado.

    Fábio de Paula Junior

    terça-feira, 25 de junho de 2013 04:11
    Moderador
  • Fabio bom dia.

    Desde já agradeço a sua atenção , vamos lá:

    eu fiz esse aqui que deu certo, mostrou e tudo o tempo da cópia e tal 

    Const FOF_CREATEPROGRESSDLG = &H0&
    ParentFolder = "D:\backup"
    Set objShell = CreateObject("Shell.Application")
    Set objFolder = objShell.NameSpace(ParentFolder)
    objFolder.CopyHere "C:\downloads", FOF_CREATEPROGRESSDLG

    porém eu preciso fazer com este script que cria uma pasta + data da criação para fazer um backup .O que estaria errado aqui amigo ?

    Const FOF_CREATEPROGRESSDLG = &H0&
    ParentFolder = "F:\BACKUP_ADMIN"
    Set objShell = CreateObject("Shell.Application")
    Set objFolder = objShell.NameSpace(ParentFolder)
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set WshShell=CreateObject("Wscript.Shell")
    dNow = Now
    yyyy = Right(Year(dNow), 4)
    mt = Right("00" &Month(dNow), 2)
    dd = Right("00" &Day(dNow), 2)
    hh = Right("00" &Hour(dNow), 2)
    nn = Right("00" &Minute(dNow), 2)
    ss = Right("00" &Second(dNow), 2)
    NewFolder = "F:\BACKUP_ADMIN\" & "BACKUP_ADMIN " & dd & "-" & mt & "-" & yyyy & "." & hh & "-" & nn & "\"
    objFSO.CreateFolder NewFolder
    objFolder.CopyHere "D:\RD_ADMIN\ADMIN\admin_compactado", NewFolder , FOF_CREATEPROGRESSDLG ,true
    ObjFSO.copyfolder "D:\RD_ADMIN\ADMIN\admin_compactado", "F:\BACKUP_ADMIN\GRAVAR DVD DE BACKUP\" , true
    objFolder.CopyHere "C:\downloads", FOF_CREATEPROGRESSDLG
     
    objFSO.DeleteFile "D:\RD_ADMIN\ADMIN\admin_compactado\*.*"

    Obrigado

    Josè Antônio Duarte


    terça-feira, 25 de junho de 2013 12:56
  • Se entendi bem:

    Analise esta linha:

    objFolder.CopyHere "C:\downloads", FOF_CREATEPROGRESSDLG

    Vc esta mandando copia a pasta c:\donwloads para dentro da pasta que esta configurada no objeto objFolder.

    So que vc setou isto muito cedo em:

    Set objFolder = objShell.NameSpace(ParentFolder)

    Acho que vc tem que utilizar a linha acima apos a criacao da pasta nova, assim

    Set objFolder = objShell.NameSpace(NewFolder)

    Nao tenho como testar no momento, mas faz sentido pra vc?


    Fábio de Paula Junior

    terça-feira, 25 de junho de 2013 13:49
    Moderador
  • vixi Fábio faz sentido sim..

    mas não consegui assimilar as coisas ...

    vc disse que eu setei isso muito cedo ( deve existir esta linha?)

    ficou assim:

    Const FOF_CREATEPROGRESSDLG = &H0&
    ParentFolder = "F:\BACKUP_ADMIN"
    Set objShell = CreateObject("Shell.Application")
    Set objFolder = objShell.NameSpace(NewFolder)
    Set objFolder = objShell.NameSpace(ParentFolder)
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set WshShell=CreateObject("Wscript.Shell")
    dNow = Now
    yyyy = Right(Year(dNow), 4)
    mt = Right("00" &Month(dNow), 2)
    dd = Right("00" &Day(dNow), 2)
    hh = Right("00" &Hour(dNow), 2)
    nn = Right("00" &Minute(dNow), 2)
    ss = Right("00" &Second(dNow), 2)
    NewFolder = "F:\BACKUP_ADMIN\" & "BACKUP_ADMIN " & dd & "-" & mt & "-" & yyyy & "." & hh & "-" & nn & "\"
    objFSO.CreateFolder NewFolder
    objfolder.CopyHere "D:\RD_ADMIN\ADMIN\admin_compactado", NewFolder , FOF_CREATEPROGRESSDLG
    ObjFSO.copyfolder "D:\RD_ADMIN\ADMIN\admin_compactado", "F:\BACKUP_ADMIN\GRAVAR DVD DE BACKUP\" , true
     
    objFSO.DeleteFile "D:\RD_ADMIN\ADMIN\admin_compactado\*.*"

    porém quando mando rodar apresenta a mensagem :

    numero de arqumentos incorreto ou atribuio de proprieda invlida:

    tá dificil parceiro ... me ajuda ai ...

    abração


    terça-feira, 25 de junho de 2013 14:48
  • Vou tentar de novo:

    1)O que significa esta linha?

    objFolder.CopyHere "C:\downloads", FOF_CREATEPROGRESSDLG

    Resposta: Copiar c:\Donwload para dentro da pasta setada em objFolder.

    Agora me responde, qual pasta esta setada em objFolder????

    A respostas esta nesta linha:

    Set objFolder = objShell.NameSpace(ParentFolder)


    No ultimo script que vc mandou vc adicionou isto aqui:

    Set objFolder = objShell.NameSpace(NewFolder)
    Set objFolder = objShell.NameSpace(ParentFolder)

    Vc primeiro disse que objFolder sera igua a pasta da variavel NewFolder e logo em seguida ja mudou pra outra.

    Neste momento NewFolder esta Vazio, vc tem que usar esta linha depois que vc contruir NewFolder.

    Ta chegando la'...


    Fábio de Paula Junior

    terça-feira, 25 de junho de 2013 15:45
    Moderador
  • Fabio a pasta c:\downloads foi somente um exemplo que eu criei para desmonstração.

    O problema maior é que :

    Eu preciso copiar para a nova pasta de backup+data que o script construi :

    Achei que isso poderia ser mais fácil , mas pelo jeito vou ter que desistir disso:

    2 dias e não consegui resolver ...

    vlw

    terça-feira, 25 de junho de 2013 20:25
  • Fabio nesse script que segui do exemplo deu certo:

    Const FOF_CREATEPROGRESSDLG = &H0&
    ParentFolder = "D:\backup"
    Set objShell = CreateObject("Shell.Application")
    Set objFolder = objShell.NameSpace(ParentFolder)
    objFolder.CopyHere "C:\downloads", FOF_CREATEPROGRESSDLG

    porém quando tento implementar no backup meu aqui que dá pau..

    terça-feira, 25 de junho de 2013 20:38
  • Fabio consegui rodar o backup com este script porém não aparece o tempo de execução:

    Const FOF_CREATEPROGRESSDLG = &H0&
    set objFSO = CreateObject("Scripting.FileSystemObject")
    Set WshShell=CreateObject("Wscript.Shell")
    Set objShell = CreateObject("Shell.Application")
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    ParentFolder = "F:\BACKUP_ADMIN\"
    dNow = Now
    yyyy = Right(Year(dNow), 4)
    mt = Right("00" &Month(dNow), 2)
    dd = Right("00" &Day(dNow), 2)
    hh = Right("00" &Hour(dNow), 2)
    nn = Right("00" &Minute(dNow), 2)
    ss = Right("00" &Second(dNow), 2)
    NewFolder = "F:\BACKUP_ADMIN\" & "BACKUP_ADMIN " & dd & "-" & mt & "-" & yyyy & "." & hh & "-" & nn & "\"
    objFSO.CreateFolder NewFolder

    objFSO.CopyFolder "D:\RD_ADMIN\ADMIN\admin_compactado", NewFolder , FOF_CREATEPROGRESSDLG   """" AQUI DEVERIA CHAMAR A CONSTANTE DO TEMPO""

    ObjFSO.copyfolder "D:\RD_ADMIN\ADMIN\admin_compactado", "F:\BACKUP_ADMIN\GRAVAR DVD DE BACKUP\" , true

    Mas não está chamando.

    terça-feira, 25 de junho de 2013 21:19
  • Fabão boa noite ..

    pode me ajudar ? 

    ainda não consegui  fazer aparecer o tempo ..

    Desde já agradeço 

    quinta-feira, 27 de junho de 2013 00:23
  • José Antônio,

    Eu prefiro ensinar do que fazer pra você, mas já que está dificil...

    'Fiz apenas uma modificacao no seu script: colocar a pasta raiz do backup
    'em uma variavel (facilita o meu teste) e tambem uma variavel com os arquivos de origem
    strRaizBackup  = "F:\BACKUP_ADMIN\"  'Aqui é a pasta destino, ainda será criada uma subpasta
    strPastaBackup = "D:\RD_ADMIN\ADMIN\admin_compactado"			'Aqui é o que será copiado (origem)
    
    'Aqui começa o seu script, fiz apenas uma modificacao (newfolder=...) e exclui as duas ultimas linhas
    
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set WshShell=CreateObject("Wscript.Shell")
    
    dNow = Now
    yyyy = Right(Year(dNow), 4)
    mt = Right("00" & Month(dNow), 2)
    dd = Right("00" & Day(dNow), 2)
    hh = Right("00" & Hour(dNow), 2)
    nn = Right("00" & Minute(dNow), 2)
    ss = Right("00" & Second(dNow), 2)
    'A linha abaixo eu modifiquei, agora usa variavel setada no inicio do script
    NewFolder = strRaizBackup & "BACKUP_ADMIN " & dd & "-" & mt & "-" & yyyy & "." & hh & "-" & nn & "\"
    objFSO.CreateFolder NewFolder
    
    'Até aqui é o seu script (ele apenas criou a pasta de destino) ===========================================
    
    'Agora começa a cópia com progresso =================
    
    Const FOF_CREATEPROGRESSDLG = &H0&
    ParentFolder = NewFolder 'Aqui é configurado a pasta de destino
    Set objShell = CreateObject("Shell.Application")
    Set objFolder = objShell.NameSpace(ParentFolder)
    objFolder.CopyHere strPastaBackup, FOF_CREATEPROGRESSDLG 'Aqui realiza a cópia.
    
    'Aqui acabou a cópia =================
    
    'Esta sua linha não precisa mais, já que a cópia já aconteceu.
    'ObjFSO.copyfolder "D:\RD_ADMIN\ADMIN\admin_compactado", NewFolder , true
    
    'A linha abaixo vc pode deixar
    objFSO.DeleteFile "D:\RD_ADMIN\ADMIN\admin_compactado\*.rar"

    Veja que não tem nenhum bicho de 7 cabeças, é apenas colocar o código no lugar certo, hoje eu consigo ver isto fácil, mas apanhei muito, se não tentar não aprende.

    Scripts não tem muito segredo, eu mesmo escrevo pouca coisa do zero, na maior parte do tempo é juntar dois exemplos de código e fazer com que eles conversem, como neste caso. Era apenas uma questão de substituir a parte que vc copiava o diretório e preencher corretamente os parametros com dados que você já dispunha.Veja como alterei apenas duas palavras do código original.


    Fábio de Paula Junior

    quinta-feira, 27 de junho de 2013 01:54
    Moderador
  • Bom dia Fábio.

    Obrigado pelas dicas.

    Estou em viagem e assim que retornar a empresa eu vou testar e posto o resultado.

    Desde já agradeço

    Saudações

    José Antônio Duarte

    segunda-feira, 1 de julho de 2013 12:32
  • José Antônio,

    Conseguiu?


    Fábio de Paula Junior

    segunda-feira, 8 de julho de 2013 19:26
    Moderador
  • Bom dia Fábio.

    Estou em período de férias da empresa.

    Semana que vem estarei de volta e vou testar e te aviso o resultado.

    Desde já agradeço

    quinta-feira, 11 de julho de 2013 12:31
  • Boa tarde amigo Fábio.

    Havia perdido minha senha para entrar no forum...

    retornando ...

    vou testar o script e aviso  o resultado ..

    Desde já agradeço

    Att: José Antônio

    quinta-feira, 30 de janeiro de 2014 16:25
  • Boa tarde Fábio, fiz os testes de acordo com o que vc me ensinou, o script foi executado com sucesso, porém ele roda em modo oculto ( só vejo pelo gerenciador de tarefas que o wscript.exe está rodando mas sem tempo de execução ainda faltando) tem como fazer com o script rode de forma visível para o operador informando o status de tempo e cópia dos arquivos conforme roda uma cópia de CTRL+C  e CRTL+V do windows ?

    Desde já fico muito grato pela sua contribuição e fico aguardando ..

    Grande abraço

    José Antônio Duarte

    PS: o meu script ficou assim :

    strRaizBackup = "H:\BACKUP_ADMIN\"  
    strPastaBackup = "S:\RD_ADMIN\ADMIN\admin_compactado"    
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set WshShell=CreateObject("Wscript.Shell")

    dNow = Now
    yyyy = Right(Year(dNow), 4)
    mt = Right("00" & Month(dNow), 2)
    dd = Right("00" & Day(dNow), 2)
    hh = Right("00" & Hour(dNow), 2)
    nn = Right("00" & Minute(dNow), 2)
    ss = Right("00" & Second(dNow), 2)
    'A linha abaixo eu modifiquei, agora usa variavel setada no inicio do script
    NewFolder = strRaizBackup & "BACKUP_ADMIN " & dd & "-" & mt & "-" & yyyy & "." & hh & "-" & nn & "\"
    objFSO.CreateFolder NewFolder

    'Até aqui é o seu script (ele apenas criou a pasta de destino) ===========================================

    'Agora começa a cópia com progresso =================

    Const FOF_CREATEPROGRESSDLG = &H0&
    ParentFolder = NewFolder 'Aqui é configurado a pasta de destino
    Set objShell = CreateObject("Shell.Application")
    Set objFolder = objShell.NameSpace(ParentFolder)
    Set objFolder = objShell.NameSpace(ParentFolder)
    objFolder.CopyHere str = "S:\RD_ADMIN\ADMIN\admin_compactado", FOF_CREATEPROGRESSDLG

    'Aqui acabou a cópia =================

    'Esta sua linha não precisa mais, já que a cópia já aconteceu.
    ObjFSO.copyfolder "S:\RD_ADMIN\ADMIN\admin_compactado", NewFolder , true

    'A linha abaixo vc pode deixar
    objFSO.DeleteFile "S:\RD_ADMIN\ADMIN\admin_compactado\*.rar"


    quinta-feira, 30 de janeiro de 2014 17:13
  • Fábio bom dia.

    O script funciona a parte de criação de pasta, cópia e deletar o arquivos , porém ainda não consigo achar o pq na função  : set objFolder = objShell.NameSpace(ParentFolder) ele não mostra o que está copiando , fazendo um script simples somente de cópia ele mostra mas quando eu rodo este script que vc me ensinou não vai, será que está faltando algo ou o windows não consegue carregar o progresso da cópia quando está fazendo este tipo de script ?

    Agradeço de coração pela ajuda mas se ainda me puder me dar esta força agradeço muito .

    quarta-feira, 12 de fevereiro de 2014 11:03
  • José Antônio,

    Eu prefiro ensinar do que fazer pra você, mas já que está dificil...

    'Fiz apenas uma modificacao no seu script: colocar a pasta raiz do backup
    'em uma variavel (facilita o meu teste) e tambem uma variavel com os arquivos de origem
    strRaizBackup  = "F:\BACKUP_ADMIN\"  'Aqui é a pasta destino, ainda será criada uma subpasta
    strPastaBackup = "D:\RD_ADMIN\ADMIN\admin_compactado"			'Aqui é o que será copiado (origem)
    
    'Aqui começa o seu script, fiz apenas uma modificacao (newfolder=...) e exclui as duas ultimas linhas
    
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set WshShell=CreateObject("Wscript.Shell")
    
    dNow = Now
    yyyy = Right(Year(dNow), 4)
    mt = Right("00" & Month(dNow), 2)
    dd = Right("00" & Day(dNow), 2)
    hh = Right("00" & Hour(dNow), 2)
    nn = Right("00" & Minute(dNow), 2)
    ss = Right("00" & Second(dNow), 2)
    'A linha abaixo eu modifiquei, agora usa variavel setada no inicio do script
    NewFolder = strRaizBackup & "BACKUP_ADMIN " & dd & "-" & mt & "-" & yyyy & "." & hh & "-" & nn & "\"
    objFSO.CreateFolder NewFolder
    
    'Até aqui é o seu script (ele apenas criou a pasta de destino) ===========================================
    
    'Agora começa a cópia com progresso =================
    
    Const FOF_CREATEPROGRESSDLG = &H0&
    ParentFolder = NewFolder 'Aqui é configurado a pasta de destino
    Set objShell = CreateObject("Shell.Application")
    Set objFolder = objShell.NameSpace(ParentFolder)
    objFolder.CopyHere strPastaBackup, FOF_CREATEPROGRESSDLG 'Aqui realiza a cópia.
    
    'Aqui acabou a cópia =================
    
    'Esta sua linha não precisa mais, já que a cópia já aconteceu.
    'ObjFSO.copyfolder "D:\RD_ADMIN\ADMIN\admin_compactado", NewFolder , true
    
    'A linha abaixo vc pode deixar
    objFSO.DeleteFile "D:\RD_ADMIN\ADMIN\admin_compactado\*.rar"

    Veja que não tem nenhum bicho de 7 cabeças, é apenas colocar o código no lugar certo, hoje eu consigo ver isto fácil, mas apanhei muito, se não tentar não aprende.

    Scripts não tem muito segredo, eu mesmo escrevo pouca coisa do zero, na maior parte do tempo é juntar dois exemplos de código e fazer com que eles conversem, como neste caso. Era apenas uma questão de substituir a parte que vc copiava o diretório e preencher corretamente os parametros com dados que você já dispunha.Veja como alterei apenas duas palavras do código original.


    Fábio de Paula Junior

    Fábio bom dia.

    O script funciona a parte de criação de pasta, cópia e deletar o arquivos , porém ainda não consigo achar o pq na função  : set objFolder = objShell.NameSpace(ParentFolder) ele não mostra o que está copiando , fazendo um script simples somente de cópia ele mostra mas quando eu rodo este script que vc me ensinou não vai, será que está faltando algo ou o windows não consegue carregar o progresso da cópia quando está fazendo este tipo de script ?

    Agradeço de coração pela ajuda mas se ainda me puder me dar esta força agradeço muito .


    quarta-feira, 12 de fevereiro de 2014 11:04
  • José Antônio,

    Executei o script que te passei alterando apenas as pasta de origem e destino, e olha a janela que aparece pra mim:

    O script está correto, pode ser a forma que você executa que está ocasionando o problema.

    Eu apenas dei dois clicks no arquivo .vbs, o que você está fazendo?

    Estou executando em um micro com Windows 7 e meu usuário não é administrador.


    Fábio de Paula Junior



    sexta-feira, 14 de fevereiro de 2014 18:34
    Moderador
  • José Antônio,

    Eu prefiro ensinar do que fazer pra você, mas já que está dificil...

    'Fiz apenas uma modificacao no seu script: colocar a pasta raiz do backup
    'em uma variavel (facilita o meu teste) e tambem uma variavel com os arquivos de origem
    strRaizBackup  = "F:\BACKUP_ADMIN\"  'Aqui é a pasta destino, ainda será criada uma subpasta
    strPastaBackup = "D:\RD_ADMIN\ADMIN\admin_compactado"			'Aqui é o que será copiado (origem)
    
    'Aqui começa o seu script, fiz apenas uma modificacao (newfolder=...) e exclui as duas ultimas linhas
    
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set WshShell=CreateObject("Wscript.Shell")
    
    dNow = Now
    yyyy = Right(Year(dNow), 4)
    mt = Right("00" & Month(dNow), 2)
    dd = Right("00" & Day(dNow), 2)
    hh = Right("00" & Hour(dNow), 2)
    nn = Right("00" & Minute(dNow), 2)
    ss = Right("00" & Second(dNow), 2)
    'A linha abaixo eu modifiquei, agora usa variavel setada no inicio do script
    NewFolder = strRaizBackup & "BACKUP_ADMIN " & dd & "-" & mt & "-" & yyyy & "." & hh & "-" & nn & "\"
    objFSO.CreateFolder NewFolder
    
    'Até aqui é o seu script (ele apenas criou a pasta de destino) ===========================================
    
    'Agora começa a cópia com progresso =================
    
    Const FOF_CREATEPROGRESSDLG = &H0&
    ParentFolder = NewFolder 'Aqui é configurado a pasta de destino
    Set objShell = CreateObject("Shell.Application")
    Set objFolder = objShell.NameSpace(ParentFolder)
    objFolder.CopyHere strPastaBackup, FOF_CREATEPROGRESSDLG 'Aqui realiza a cópia.
    
    'Aqui acabou a cópia =================
    
    'Esta sua linha não precisa mais, já que a cópia já aconteceu.
    'ObjFSO.copyfolder "D:\RD_ADMIN\ADMIN\admin_compactado", NewFolder , true
    
    'A linha abaixo vc pode deixar
    objFSO.DeleteFile "D:\RD_ADMIN\ADMIN\admin_compactado\*.rar"

    Veja que não tem nenhum bicho de 7 cabeças, é apenas colocar o código no lugar certo, hoje eu consigo ver isto fácil, mas apanhei muito, se não tentar não aprende.

    Scripts não tem muito segredo, eu mesmo escrevo pouca coisa do zero, na maior parte do tempo é juntar dois exemplos de código e fazer com que eles conversem, como neste caso. Era apenas uma questão de substituir a parte que vc copiava o diretório e preencher corretamente os parametros com dados que você já dispunha.Veja como alterei apenas duas palavras do código original.


    Fábio de Paula Junior

    Este foi o script que eu testei e funcionou.

    Fábio de Paula Junior

    sexta-feira, 14 de fevereiro de 2014 18:37
    Moderador
  • Fabio bom dia.

    Então amigo , eu estou rodando ele no windows server 2003 sp 2 e não aparece.... vou fazer um teste com o windows 7 e depois posto o resultado.

    Desde já agradeço

    segunda-feira, 17 de fevereiro de 2014 11:29
  • Fabio bom dia.

    Como não estava dando certo de forma alguma eu fiz o seguinte, peguei o script e copiei ele todo para um pc que tinha W7 , salvei e fiz uma nova cópia , mandei para o pc que tem WSERVER 2003 e não sei o pq a cópia está rodando rsrsrs.. coisas da INFORMÁTICA ...

    Amigo desde já agradeço de coração a sua contribuição, me salvou por várias vezes e quem sabe um dia eu tbm possa contribuir , poderá contar comigo..

    Obrigado

    Saudações

    José Antônio Duarte

    segunda-feira, 17 de fevereiro de 2014 12:09
  • Boa noite Fábio ,

    Não sei se ainda posso perguntar neste mesmo post.

    Mas já aproveitando a oportunidade gostaria de saber se tem a possibilidade de criar uma subpasta dentro do diretório é que criado no script que vc me ajudou .

    Tem esta possibilidade ?

    Agradeço desde já

    José Antônio

    terça-feira, 19 de abril de 2016 22:20