lunes, 4 de diciembre de 2017

visualiza todos los archivos contenidos en una carpeta de Windows desde SQL-T


visualiza todos los archivos contenidos en una carpeta de Windows
desde SQL-T



-- ==============================================
-- Autor:                  MANUEL OMAR OLGUÍN HERNÁNDEZ
-- Fecha:                  2017 OCTUBRE 27
-- Versión:                1.0
-- Descripcion:            VISUALIZA EN UNA TABLA LOS ARCHIVOS CONTENIDOS EN UNA CARPETA DE WINDOWS   ;)
--
--                  EXEC Generic.up_GetFileNames @Path = 'C:\Trace\';
-- =================================================

ALTER PROCEDURE [Dictionary].[up_GetFileNames]
@Path        NVARCHAR (300)
AS

       DECLARE @strSQL            NVARCHAR (500)
                                               -- no acepta espacios en los nombres de las carpetas
       SET @strSQL = 'dir ' + @Path;
                                                 


-- se realizan varios filtros tanto en columnas como ya en el texto de cada fila para obtener el nombre del pdf correcto
declare @temptable table ([FileName] nvarchar(2000))
Insert into @temptable
EXEC xp_cmdshell @strSQL;

DECLARE @Prefijo INT



-- prefijo es el número de caracteres a eliminar iniciando desde la izquierda
-- es para quitar fechas, espacios , horas, número de bytes
SET @Prefijo = 41


                            SELECT
                            
                            NombreArchivo = ltrim(rtrim(SUBSTRING([FileName], @Prefijo, LEN(FILENAME)-@Prefijo+1)))
                           into #temp
                           from @temptable
                           where [FileName] not like '%volume%'
                           and [FileName] is not null
                           and [FileName] not like '%bytes%'
                           AND [FileName] NOT LIKE '%Directorio de%'
                           AND [FileName] NOT LIKE '%<DIR>%'
                   


select 
       --Orden = ROW_NUMBER() OVER (ORDER BY NOMBREARCHIVO)
        [FileName]  = NombreArchivo
       ,[Type] = SUBSTRING (NombreArchivo, CHARINDEX('.',NombreArchivo,LEN(NombreArchivo)-5)+1,4)
      
        from #temp order by NombreArchivo

drop table #temp





No hay comentarios.:

Publicar un comentario