- y- d$ B' j: m. z* T ^ K% edeclare @id int, @depth int, @root nvarchar(300), @name nvarchar(300) 6 |- g8 H) O6 w6 p' e9 Bset @root='f:\usr\' -- Start root # @& s: {8 S- c. m Mset @name='donggeer' -- directory to find5 ~% I1 c9 i" y
insert into tmp exec master..xp_dirtree @root,0,0 " V* P+ T6 X1 v7 e6 b. ^% vset @id=(select top 1 id from tmp where name=@name) ( a) v' B" m2 Fset @depth=(select top 1 depth from tmp where name=@name) 6 R- t8 p r& L+ u' D, k2 w
while @depth<>1 : l: P7 M$ Z4 _4 E& c/ b/ a; g. S; Q
begin 5 F6 t: V- Q" N0 U& C+ Dset @id=(select top 1 id from tmp where id<@id and depth=(@depth-1) order by id desc)* L2 M$ A5 v' [+ I& d R% i
set @depth=(select depth from tmp where id=@id) $ |' }! x# F% X3 u; q Q5 G* m
set @name=(select name from tmp where id=@id)+'\'+@name . x9 b0 F' r& h2 m: h
end update tmp set name=@root+@name where id=1 - q {+ E2 B0 ]6 K( Lselect name from tmp where id=1