带通配符,查找 指定目录下文件的SQL存储过程

通配符查找 指定目录下文件的过程:

--查找指定文件夹(目录)下的文件。
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 @[email protected];
                        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 @[email protected][email protected]+ISNULL([FileName],‘‘) FROM @Tab;        
        IF @FileS<>‘‘BEGIN  --去除首位 分隔符@FG
                IF SUBSTRING(@FileS,1,LEN(@FG))[email protected] BEGIN ;
                        SET @FileS=SUBSTRING(@FileS,LEN(@FG)+1,LEN(@FileS));
                        END;
                END;        
END1:
        --print ‘@FileS=‘[email protected];
        --select [FileName] from @Tab;
END
时间: 2024-10-08 03:38:48

带通配符,查找 指定目录下文件的SQL存储过程的相关文章

linux下自动ftp到服务器对比拷贝指定目录下文件

#!/bin/bash process=8 PWD=`pwd` DAT=`date` ftpip="192.168.1.1" user="ftp_username" password="ftp_password" local_dir="/home/" getlist() { ftp -n $ftpip <<EOF |awk '{print $9}'|sed '/^$/d' >$PWD/list user $u

IO流-获取指定目录下文件夹和文件对象【File类】

一.运用File类实现获取指定目录下文件夹和文件对象 1.File类 2.方法: 获取文件绝对路径 :getAbsolutePath 案例: import java.io.File; /** * 获取指定目录下文件夹和文件对象 * Created by lcj on 2017/11/7. */ public class fileTest03 { public static void main(String[] args) { File dirr = new File("D:\\xuexizili

php递归查找指定目录下及子文件名称是否包含中文空格及括号

1 //php递归查找该目录下及子文件名称是否包含中文空格括号 2 function searchDir($path,&$data){ 3 if(is_dir($path)){ 4 $dp=dir($path); 5 while($file=$dp->read()){ 6 if($file!='.'&& $file!='..'){ 7 searchDir($path.'/'.$file,$data); 8 } 9 } 10 $dp->close(); 11 } 12 i

按文件大小列出指定目录下文件(du,sort)

需求 做系统移植的过程中,经常会遇到需要查看指定目录下所有文件大小的需求,然后根据文件的大小进行暴力的删除操作. 方案 列出所有文件的具体大小. du -s * sort命令对其进行排序. du -s * | sort -t " " -k 1 -nru 版权声明:本文为博主原创文章,未经博主允许不得转载.

python查找指定目录下所有文件,以及改文件名的方法

一: os.listdir(path) 把path目录下的所有文件保存在列表中: >>> import os>>> import re>>> path = "/home/popt/fiile">>> print (os.listdir(path))['Temp.conf', 'del2.py', 'ha.conf.bak', 'ha.conf', 'del.py', 'rename.py']>>>

查找指定目录下的文件?.xml

pre{ line-height:1; color:#9f1d66; background-color:#cfe4e4; font-size:16px;}.sysFunc{color:#5d57ff;font-style:italic;font-weight:bold;} .selfFuc{color:#8e0ed3;} .bool{color:#008000;} .condition{color:#008000;font-weight:bold;} .key{color:#440080;} .

用JAVA查找指定目录下包含关键字的文件

最近要改一个产品到MYSQL数据库,源代码是遗留下来的,里面有很多反编译的文件,并且带有错误.因此想要删掉这些反编译文件,避免干扰.好在这些文件内容里都带有反编译器的信息.通过关键字在ECLIPSE下搜索发现了500+个文件,无奈只好想办法批量删除.首先想到用脚本语言(bat),网上找了一遍,没有合适的,最后决定用JAVA实现. 1 public static String[] findFiles(String baseURL,String... contains){ 2 File baseDI

循环处理目录下文件框架

经过会遇到对指定目录下文件循环处理的情况,往往是写个函数进行循环处理,每次都这样,代码重复量很大. 于是想到总结一下经验,简化后续做目录下文件循环处理流程. 1.最简框架,可以对目录进行循环处理,对于每个文件需要如何处理则由子类实现 package cn.jerryhouse.util.file; import java.io.File; public abstract class FileProcessor { private long totalFileCount = 0; private

用python查找在指定目录下特定文件夹下的指定文件

本代码是在python2.*上边所写. 功能:在指定目录下查找特定文件夹下的特定文件. 实例:查找在packages目录下文件夹名为values下的strings.xml文件 #!/usr/bin/env python import os def walk_dir(path): filter_file_name = 'strings.xml' for root, dirs, files in os.walk(path): for dir_item in dirs: if dir_item ==