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

    Deletar qvds através do script

    Heber Araujo

      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
              Heber Araujo

              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
                      Heber Araujo

                      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