none
Problema sentencia de msdos en storedProcedure RRS feed

  • Pregunta

  • Hola.

    En un procedimiento almacenado recibo una ruta local del servidor.

    Quiero comprobar que la ruta existe realmente, puesto que despues voy a guardar unas cosas en ella.

    Lo estaba haciendo en un procedimiento almacenado.

    No se si hay algo especifico de sql para saber si la carpeta existe.

    Lo estaba haciendo con un comando de MSDOS.

    Lo hago asi:

    set @cmd = 'IF EXIST '+@RutaLocal+' ( ECHO 1 ) ELSE ( ECHO 0 )'
    print @cmd
    exec @result=master..xp_cmdshell @cmd
    print @result
    IF @result=1
    begin 
    set @cmd = @UtilsFoe 
    end
    else
    begin
    set @cmd = 'sa /de' 
    end
    

    El problema esta en que en el result siempre hay un 0. En output si que sale y founciona bien, pero en resoutl del if siempre hay un 0

    Hay algun modo de saber mediante un stored procedure si una ruta existe?

     

    martes, 28 de septiembre de 2010 7:41

Respuestas

  • Prueba con:

    SET

     

    NOCOUNT ON

    DECLARE

     

    @path NVARCHAR(500)

    SET

     

    @path = N'<<la carpeta a buscar>>'

    CREATE

     

    TABLE #table (File_exists int, File_directory int,parent_dir int)

    INSERT

     

    INTO #table EXEC master..xp_fileexist @path

    IF

     

    EXISTS(SELECT * FROM #table WHERE File_directory = 1)

     

    PRINT @path + ' existe'

    ELSE

     

    PRINT @path + 'no existe'

    DROP

     

    TABLE #table

    • Propuesto como respuesta Carlos Sacristan martes, 28 de septiembre de 2010 8:00
    • Marcado como respuesta sishco martes, 28 de septiembre de 2010 8:01
    martes, 28 de septiembre de 2010 8:00

Todas las respuestas

  • Prueba con:

    SET

     

    NOCOUNT ON

    DECLARE

     

    @path NVARCHAR(500)

    SET

     

    @path = N'<<la carpeta a buscar>>'

    CREATE

     

    TABLE #table (File_exists int, File_directory int,parent_dir int)

    INSERT

     

    INTO #table EXEC master..xp_fileexist @path

    IF

     

    EXISTS(SELECT * FROM #table WHERE File_directory = 1)

     

    PRINT @path + ' existe'

    ELSE

     

    PRINT @path + 'no existe'

    DROP

     

    TABLE #table

    • Propuesto como respuesta Carlos Sacristan martes, 28 de septiembre de 2010 8:00
    • Marcado como respuesta sishco martes, 28 de septiembre de 2010 8:01
    martes, 28 de septiembre de 2010 8:00
  • Gracias

    Funciona Perfecto

    martes, 28 de septiembre de 2010 8:01