SQL遍历文件夹 / 文件,返回文件夹列表信息

来源:互联网 发布:软件安装协议书范本 编辑:程序博客网 时间:2024/05/05 20:33
/*
EXEC master.dbo.xp_cmdshell 'copy c:\a.txt d:\log\'    --- CopyEXEC master.dbo.xp_subdirs 'd:\'  --- 显示指定目录下有哪些文件夹
EXEC master.dbo.xp_dirtree 'd:\', @depth = 1   -- 显示指定目录有哪些子目录 (@depth = 1 表示只遍历深度为 1 的目录;此变量不填写,就遍历所有子目录)EXEC master.dbo.xp_cmdshell 'dir /b/s d:' 
*/
DECLARE @Path nvarchar(260)SET @Path = 'C:\Downloads'IF RIGHT(@Path, 1) <> '\'    SET @Path = @Path + '\'IF OBJECT_ID('tempdb..#File') IS NOT NULL    DROP TABLE #FileCREATE TABLE #File(    id int IDENTITY,  --编号    directory nvarchar(260),  --路径    depth int, --深度,相对与@path    IsFile bit )--0文件夹1文件名成INSERT #File EXEC master.dbo.xp_dirtree     @path = @path,    @depth = 0,    @file = 1DECLARE @depth int, @depthMax intUPDATE #File SET     directory = @Path + directoryWHERE depth = 1SELECT     @depth = 2,    @depthMax = MAX(depth)FROM #FileWHILE @depth <= @depthMaxBEGIN    UPDATE A SET         directory = (                SELECT TOP 1                     directory                FROM #File                WHERE depth = @depth - 1                    AND IsFile = 0                    AND id < A.id                ORDER BY id DESC            ) + N'\' + directory    FROM #File A    WHERE depth = @depth    SET @depth= @depth + 1ENDSELECT * FROM #File
                                             
0 0
原创粉丝点击