查找文件的语句2 r7 J3 I; s: e
# \! h' E! m: g& [
CODE:
$ |7 ~7 W4 @' Y- k/ B7 @) C; P
6 z/ C% |% _' F+ Q9 s6 {0 W/ R' Qdrop table tmp;2 u% b& Q! j7 G' \7 C
create table tmp
4 w4 T, _/ N! t" x8 ~& K(
1 @1 x0 ? x6 M9 `- a8 W[id] [int] IDENTITY (1,1) NOT NULL,
# |! b, f0 A2 }9 [9 d[name] [nvarchar] (300) NOT NULL,2 ]; T% q5 O3 z. F
[depth] [int] NOT NULL,5 w, B$ o0 o4 Y
[isfile] [nvarchar] (50) NULL
@( F: Z9 |; s7 c7 C);) p% ?7 X5 \% w4 {( i2 y, i
( @, y' _# B7 k2 ^- J4 A
declare @id int, @depth int, @root nvarchar(300), @name nvarchar(300)
; Y0 m! {1 b4 X6 I: Yset @root='f:\usr\' -- Start root
: a, P3 I# N* T* W* {+ L! O' Aset @name='cmd.exe' -- Find file8 F9 z, S& X- z- e4 Q
insert into tmp exec master..xp_dirtree @root,0,1--
: Q9 u' B+ d3 o3 qset @id=(select top 1 id from tmp where isfile=1 and name=@name) 8 H8 z6 _: [) m
set @depth=(select top 1 depth from tmp where isfile=1 and name=@name)
# w4 l" c( ]1 B, p1 hwhile @depth<>1
* a) P3 [- ^8 J; jbegin 8 ~/ p! P# |* k$ ]
set @id=(select top 1 id from tmp where isfile=0 and id<@id and depth=(@depth-1) order by id desc) . k6 G, I( F1 ^& V
set @depth=(select depth from tmp where id=@id) + N' s4 c- k) z6 q+ s/ k
set @name=(select name from tmp where id=@id)+'\'+@name3 g' q! P/ g0 D& F) Y
end
- ]: |7 k. b: o) q# {8 N$ t0 Dupdate tmp set name=@root+@name where id=1
8 K* s; g% h. n* Bselect name from tmp where id=1
9 d' L$ T5 f9 V% t+ T; m7 b& a f- {8 f5 p$ R7 ]2 E8 Q9 b$ j. p$ Q
查找目录的语句
7 i1 s$ Q @* w+ j& }& v6 r: |" q( w0 `7 Z
9 `+ B% v. u) z7 r3 ~4 V: PCODE:
8 F4 i0 i+ \( [' r
( p, u) R5 W& I5 v" v, c/ f) [! }! F. ]/ o7 h6 o
drop table tmp;* T9 I; I. ^0 |/ t: V2 t/ _
create table tmp
& }2 g; \+ _# Z/ ]5 V) ~(
0 V) G+ T* H) g[id] [int] IDENTITY (1,1) NOT NULL,
1 T" H# s" P* n/ [* m[name] [nvarchar] (300) NOT NULL,# u0 g4 k7 R# Q3 ^! f- `
[depth] [int] NOT NULL
1 A1 l, _" W# \ G3 z/ j);
. a( D: H$ N: V% h2 M
3 x6 `; k+ S7 {9 e9 I, Z; fdeclare @id int, @depth int, @root nvarchar(300), @name nvarchar(300)
# P7 u& s) _# m N, Rset @root='f:\usr\' -- Start root( Y2 d% j' u7 S3 e2 w& h. z5 c
set @name='donggeer' -- directory to find
- O6 @0 K6 \; E K; Rinsert into tmp exec master..xp_dirtree @root,0,02 ` V1 a5 B. |5 s7 n/ L" e. c) j
set @id=(select top 1 id from tmp where name=@name) 0 A7 J& i/ j6 _3 b# a8 l
set @depth=(select top 1 depth from tmp where name=@name)
8 T% D& K$ n' R. Z( v5 v1 Swhile @depth<>1 # T/ `" o7 S( O5 i6 G3 V& ]' @
begin
. Z* ? u4 C# d# t1 G0 I6 ^% dset @id=(select top 1 id from tmp where id<@id and depth=(@depth-1) order by id desc)
$ D4 b ~- Q: ^" F" ?7 I) fset @depth=(select depth from tmp where id=@id)
- c- L0 m( n1 Pset @name=(select name from tmp where id=@id)+'\'+@name / D4 n- S, N8 ~% W" y _0 H
end update tmp set name=@root+@name where id=16 A; F8 r2 l+ X& g$ Q
select name from tmp where id=1 |