您好,登錄后才能下訂單哦!
通配符查找 指定目錄下文件的過程:
--查找指定文件夾(目錄)下的文件。 ALTER PROCEDURE [FileS].[DIR_FileS] @Path nvarchar(1000) --搜索路徑。 --表示【文件夾路徑】必須以'\'結尾; --表示【文件路徑】不能以\結尾。(文件名可帶通配符) ,@FileS nvarchar(MAX) OUTPUT --返回 找到的 文件名串 ,@Depth int=1 --搜索[文件夾]深度。不為1,將搜索[子文件夾]。0全部目錄,1 第一級目錄,2 第二級目錄 依此類推 ,@FG nvarchar(10)=NULL --文件名串的 分隔符;默認char(13) AS BEGIN SET NOCOUNT ON; SET @FG=ISNULL(@FG,char(13));--分隔符;默認char(13) IF @Depth<0 SET @Depth=1;--深度為負數,改1 SET @FileS=NULL; DECLARE @Tab table ([FileName] nvarchar(Max),depth smallint,isfile bit); DECLARE @FileName as nvarchar(Max); DECLARE @i as int; --整理 參數 @Path SET @Path =RTRIM(LTRIM(ISNULL(@Path,''))); --' IF LEN(@Path)<2 GOTO END1; --無效的參數 @Path --分離 文件名(帶通配符) IF CHARINDEX('\',@Path,1)>0 AND RIGHT(@Path,1)<>'\' BEGIN --' --取最右側'\' 位置 SET @i =LEN(@Path); while @i>0 AND SUBSTRING(@Path,@i,1)<>'\' BEGIN --' SET @i=@i-1; END; IF @i>0 BEGIN --截取 文件名 SET @FileName=SUBSTRING(@Path,@i+1,LEN(@Path)); SET @Path =SUBSTRING(@Path,1,@i-1); --轉換通配符 SET @FileName=replace(@FileName,'*','%'); SET @FileName=replace(@FileName,'?','_'); END; END; --print '@Path='+ISNULL(@Path,'')+' @FileName='+ISNULL(@FileName,''); insert @Tab exec master..xp_dirtree @Path ,@Depth --查找深度:0全部目錄,1 第一級目錄,2 第二級目錄 依此類推 ,1 ;--0文件夾,非0:文件夾和文件名 --刪除不匹配 記錄 IF ISNULL(@FileName,'')<>'' BEGIN --select [FileName] from @Tab WHERE [isfile]=1 AND [FileName]like @FileName ; DELETE @Tab WHERE [isfile]<>1 OR [FileName]not like @FileName; END; ELSE DELETE @Tab WHERE [isfile]<>1; --拼裝 文件名串;加 分隔符@FG SET @FileS=''; SELECT @FileS=@FileS+@FG+ISNULL([FileName],'') FROM @Tab; IF @FileS<>''BEGIN --去除首位 分隔符@FG IF SUBSTRING(@FileS,1,LEN(@FG))=@FG BEGIN ; SET @FileS=SUBSTRING(@FileS,LEN(@FG)+1,LEN(@FileS)); END; END; END1: --print '@FileS='+@FileS; --select [FileName] from @Tab; END
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。