已知这个存储过程可以把文件名和路径读出exec master..xp_dirtree @path='D:\目录',@depth=0,@file=1--参数:目录名,目录深度,是否显示文件现在想得到'D:\笨狼代码收藏集'目录下的全部深度的文件路径[含子目录],如下表:id[编号] dir [全部文件全路径]1 D:\笨狼代码收藏集\根目录下文件1.txt
2 D:\笨狼代码收藏集\算法\算法目录下文件1.txt
3 D:\笨狼代码收藏集\算法\算法目录下文件2.txt
4 D:\笨狼代码收藏集\其他\其他目录下文件1.txt
5 D:\笨狼代码收藏集\其他\xml\xml目录下文件1.txt
。。
可以用递归和非递归,方法不限。
谢谢!!~~
2 D:\笨狼代码收藏集\算法\算法目录下文件1.txt
3 D:\笨狼代码收藏集\算法\算法目录下文件2.txt
4 D:\笨狼代码收藏集\其他\其他目录下文件1.txt
5 D:\笨狼代码收藏集\其他\xml\xml目录下文件1.txt
。。
可以用递归和非递归,方法不限。
谢谢!!~~
SET @Path = 'f:\'IF RIGHT(@Path, 1) <> '\'
SET @Path = @Path + '\'
IF OBJECT_ID('tempdb..#') IS NOT NULL
DROP TABLE #
CREATE TABLE #(
id int IDENTITY,
directory nvarchar(260),
depth int,
IsFile bit)
INSERT # EXEC master.dbo.xp_dirtree
@path = @path,
@depth = 0,
@file = 1DECLARE @depth int, @depthMax int
UPDATE # SET
directory = @Path + directory
WHERE depth = 1
SELECT
@depth = 2,
@depthMax = MAX(depth)
FROM #
WHILE @depth <= @depthMax
BEGIN
UPDATE A SET
directory = (
SELECT TOP 1
directory
FROM #
WHERE depth = @depth - 1
AND IsFile = 0
AND id < A.id
ORDER BY id DESC
) + N'\' + directory
FROM # A
WHERE depth = @depth
SET @depth= @depth + 1
END
SELECT * FROM #