已知文件所在的盘符(例如:D盘)和完整的文件名(带后缀),怎样在存储过程中获取该文件所在的绝对路径?
举例说明:已知文件 a.txt 的绝对路径为 D:\文件夹1\文件夹2\文件夹3\a.txt  ,现已知文件名 a.txt 和 文件在D盘 ,怎样在存储过程中获取该文件所在的绝对路径 D:\文件夹1\文件夹2\文件夹3\    
谢谢!
存储过程  文件  绝对路径

解决方案 »

  1.   

    非要用sql的话, 可以用 xp_cmdshell 'dir D:\*\a.txt /S' 试试
      

  2.   


    create table #tb(fpath varchar(100))
    insert into #tb(fpath) values('D:\文件夹1\文件夹2\文件夹3\a.txt')
    insert into #tb(fpath) values('D:\文件夹1\文件夹2\文件夹3\b.txt')
    insert into #tb(fpath) values('D:\文件夹1\文件夹2\文件夹3\c.txt')declare @filename varchar(10)
    set @filename='a.txt'select fpath=REPLACE(fpath, '\'+@filename,'')
    from #tb
    where left(fpath,3)='D:\' and fpath like '%\'+@filename/*
    fpath
    D:\文件夹1\文件夹2\文件夹3
    */
      

  3.   


    --文件名找绝对路径應該沒有這樣的邏輯,因為同一文件名可以存在於多個绝对路径--檢測文件名是否存在的代碼倒是有,如下:
    declare @foldername nvarchar(255)
    declare @r int
    declare @s nvarchar(255)SET @foldername='c:\test.txt'
    set @s = 'dir ' + @foldername
    exec @r=xp_cmdshell @s,no_outputif @r = 0
    print @foldername+ '存在'
    else
    print @foldername+ '不存在' 
      

  4.   

    楼主不懂树型目录里,每个目录里都可以存放 a.txt 文件的么,所以即使用搜索的方法找到了,也不一定正确。
    还是换其他的实现方法吧。
      

  5.   

    这个是Win API的功能可以实现。所以就不要强迫SQL Server去做了,建议还是让前端应用程序去实现。
      

  6.   

    建议通过其他的方法,用存储来做的话,比较麻烦,而且一般也是通过调用扩展存储过程的。不过有个办法,倒是可以考虑,你可以用c#或者vb.net 建个clr存储过程,调用.net类库,找一下就可以了。
      

  7.   

    给你找了篇文章,虽然不是查找文件,但也是通过clr存储过程来操作文件的:http://www.cnblogs.com/wghao/archive/2009/11/15/1603557.html