11 Replies Latest reply: Mar 22, 2016 9:08 AM by Luciano Vasconcelos RSS

    Deletar qvds através do script

      Boa tarde amigos do fórum. Gostaria de tirar uma dúvida com vocês, se é possível deletar qvds externos através do load script, utilizando como data para  exclusão, a data de criação do arquivo d-2.

       

      Muito Obrigado pela ajuda.

        • Re: Deletar qvds através do script
          Yuri Nicolett

          Sim, primeiro você deve habilitar a opção de executar programas externos em seu script: Dentro do editor de script (ctrl +e) vá até a aba Configuração e habilite "Pode executar programas externos".

           

          Depois disso você conseguirá chamar o aplicativo cmd.exe para executar comandos de DOS.

           

          Exemplo:

           

          EXECUTE cmd.exe /C DEL /P "C:\QVD\Tabela.qvd";


          Lembre-se que esses são comandos de DOS.


          Através disso você consegue criar uma lógica para remover os arquivos com d-2

          • Re: Deletar qvds através do script
            Alessandro Furtado

            Heber,

             

            segue um modelo que apaga.....

             

            A linha do DEL esta comentada por motivos obvios.....Depois de ver o trace e achar que esta certo, podes descomentar.....

             

            2016-02-23 20_49_04.jpg

            • Re: Deletar qvds através do script

              Boa tarde Alessandro, tudo bem?  Muito bom esse qvd, me ajudando muito. Gostaria, se possível de mais uma ajudinha, onde eu preciso salvar numa variável, o nome que esta na coluna nome do arquivo mais recente. Utilizei no final do script o peek, porém, ele me traz um nome de arquivo com os números das datas diferente.  POde me ajudar por favor.

               

              Obrigado.

                • Re: Deletar qvds através do script
                  Luciano Vasconcelos

                  Fala garoto.

                  Cria junto com o campo FileTime um campo date(FileTime, 'DD/MM/YYYY').

                  Depois disso captura o max(date(FileTime, 'DD/MM/YYYY')) numa variável.

                  No final você pode reler o resident ArquivosLidos pegando somente os registros com o novo campo de data igual a variável criada.

                    • Re: Deletar qvds através do script

                      Oi Luciano, estou tentando fazer, mas não esta dando certo.  POr gentileza, consegue me ajudar? Segue abaixo o código que estou utilizando, lembrando que tenho que salvar na váriavel, o conteudo que esta na coluna name do resultado do último dia.

                      sub DoDir (Root)

                         for each Ext in 'qvd'

                            for each File in filelist (Root&'\Tb_Fato_Rematricula*.' &Ext)

                       

                       

                               trace Lendo o arquivo $(Dir)/$(File) ;

                               

                               Let vData = floor(FileTime( '$(File)' )) - floor(Today());

                              

                              

                               if '$(vData)' <-3 then

                                ArquivosLidos:

                                LOAD

                                   '$(File)'             as Name,

                                   FileSize( '$(File)' ) as Size,

                                      'Sim'                 as Apagado,

                                   FileTime( '$(File)' ) as FileTime

                                autogenerate 1;

                                

                                  // EXECUTE cmd.exe /c del '$(File)';

                                   EXECUTE cmd.exe /C DEL "$(File)";

                                  

                               ELSE

                                ArquivosLidos:

                                LOAD

                                   '$(File)'             as Name,

                                   FileSize( '$(File)' ) as Size,

                                      'Nao'                 as Apagado,

                                      FileTime( '$(File)' ) as FileTime        

                                     

                                     

                                  

                                autogenerate 1;

                                 

                               endif  

                       

                       

                            next File

                       

                       

                         next Ext

                        

                         for each Dir in dirlist (Root&'\*' )

                            call DoDir (Dir)

                         next Dir

                        

                       

                       

                      end sub

                       

                       

                      call DoDir ('\\172.16.140.49\QV_Producao\Dropbox (SIGA)\BI SIGA\4 - Bases Diárias\Marketing BI - 2 - QVDs Corporativo\2 - Retencao\2016_1');

                       

                       

                      ArquivosLidos2:

                      Load

                       

                       

                      date(max(FileTime), 'DD_MM_YYYY_hh_mm_ss') as teste

                      resident ArquivosLidos;

                       

                       

                       

                       

                       

                       

                      LET vm = '[\Tb_Fato_Rematricula_'& peek('ArquivosLidos2',2,'ArquivosLidos2')&'.qvd]';

                       

                       

                       

                       

                      exit script