create procedure [dbo].[USP_DelOldFiles] @path varchar(25),@duration int,@subfolder bit as declare @query varchar(1000) declare @t varchar(1000) declare @name varchar(100) declare @myquery varchar(1000) set @myquery='exec master.dbo.xp_cmdshell "dir '+ltrim(rtrim(@path))+'\*.* /a/od"' create table #Filenames (id int identity(1,1),name varchar(100)) insert #Filenames(name) exec (@Myquery) delete from #Filenames where substring(name,3,1)<>'/' or name is null or CHARINDEX('..',name,1)<>0 Declare mycursor cursor LOCAL for select name from #Filenames where convert(datetime,left(name,10))<=getdate()-@duration open mycursor fetch next from mycursor into @name while (@@fetch_status=0) begin if substring(@name,37,255)<>'.' begin if CHARINDEX('',@name,1)<>0 begin if @subfolder<>0 begin set @t=@path+substring(@name,37,255)+'\' exec USP_DelOldFiles @t,@duration,@subfolder end end else begin begin set @query = 'exec master.dbo.xp_cmdshell "del '+@path+ltrim(rtrim(substring(@name,37,255)))+'"' exec @query end end end fetch next from mycursor into @name end close mycursor deallocate mycursor drop table #Filenames