none
saber si existe carpeta RRS feed

  • Pregunta

  • hola compañeros,

    Estoy buscando la manera para saber mediante T-SQL si una carpeta existe.

    Se que puede conocerse la existencia de un fichero con el 'xp_fileexist', pero necesito saber si la carpeta es la que existe.

    DECLARE @Archivo varchar(255)
    DECLARE @Existe int
    SELECT @Archivo='C:\PRUEBAS\ARCHIVO.TXT'
    EXEC Master.dbo.xp_fileexist @Archivo , @Existe OUT
    IF @Existe = 1
    PRINT 'Existe el archivo'
    ELSE PRINT 'No existe el archivo'
    GO

    con ese código puedo saber si el archivo existe, pero como podría hacer para que busque la existencia de la carpeta, es decir, revisar si existe 'C:\PRUEBAS'?

    Saludos y gracias

    martes, 26 de marzo de 2013 20:54

Respuestas

  • Hola:

    Una forma puede ser así, utilizando xp_subdirs:

    declare @t table (dir varchar(200))
    
     INSERT INTO @t
     EXEC master.dbo.xp_subdirs 'c:\'
    
     Select * FROM @t where dir = 'pruebas'

    Te obtiene todos los subdirectorios o carpetas de la carpeta que tu indiques como parametro, solo basta filtrar para saber si existe la que buscas.


    Sergio Sánchez Arias
    AYÚDANOS A AYUDARTE

    • Marcado como respuesta Jhang-Jhang martes, 26 de marzo de 2013 21:13
    martes, 26 de marzo de 2013 21:03

Todas las respuestas

  • Hola:

    Una forma puede ser así, utilizando xp_subdirs:

    declare @t table (dir varchar(200))
    
     INSERT INTO @t
     EXEC master.dbo.xp_subdirs 'c:\'
    
     Select * FROM @t where dir = 'pruebas'

    Te obtiene todos los subdirectorios o carpetas de la carpeta que tu indiques como parametro, solo basta filtrar para saber si existe la que buscas.


    Sergio Sánchez Arias
    AYÚDANOS A AYUDARTE

    • Marcado como respuesta Jhang-Jhang martes, 26 de marzo de 2013 21:13
    martes, 26 de marzo de 2013 21:03
  • Genial, gracias Sergio
    martes, 26 de marzo de 2013 21:13
  • Por si a alguien le vale, aquí va otra forma basada en la existencia del fichero:

    DECLARE @carpeta VarChar(100), @existe2 Int; SET @carpeta='C:\1'
    SET @carpeta=@carpeta+'\nul' -- realmente buscamos el fichero nul dentro de esa carpeta.
    EXEC master.dbo.xp_fileexist @archivo, @existe2 OUT
    PRINT 'Existe carpeta: '+CONVERT(VarChar,@existe2)

    Saludos.

    miércoles, 4 de febrero de 2015 11:51
  • DECLARE @Ruta as nvarchar(4000);
    DECLARE @Carpeta_Existe as int;
         
    SET @ruta = 'D:\db_EmpresaXYZBackup';
     
    DECLARE @Archivo_Resultados TABLE
        (Archivo_Existe INT,
        Archivo_Es_Carpeta INT,
        Carpeta_Principal_Existe INT
    );
     
    INSERT INTO @Archivo_Resultados
        (Archivo_Existe, Archivo_Es_Carpeta, Carpeta_Principal_Existe)
        exec master.dbo.xp_fileexist @ruta;
         
    SELECT @Carpeta_Existe = Archivo_Es_Carpeta
        FROM @Archivo_Resultados;
    --     
    -- Crea o no la carpeta indicada
    --
    IF @Carpeta_Existe = 0
    BEGIN
    PRINT 'Carpeta no existe, se creara la carpeta';
        EXECUTE master.dbo.xp_create_subdir @Ruta;
    END
    ELSE
    PRINT 'Carpeta ya existe.';
    GO
    martes, 6 de marzo de 2018 4:21