通过路径字段判断文件存不存在并返回结果

FinalKing 2007-12-17 06:42:26
RT 我想获取已有路径并且不存在文件的数据
比如 lj 字段 为D:/aaa.txt
可是我D盘下面没有该文件
希望是 传一个字段 过去动态获取
用存储过程可以,但是不知道怎么执行
...全文
85 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
FinalKing 2007-12-20
  • 打赏
  • 举报
回复
发表于:2007-12-18 23:06:4314楼 得分:0
sql2005下默认的xp_cmdshell过程是禁用的,楼主请确认你已启用它.
=========================================================
已经启用了 有些 命令需要执行SQL语句才能打开!liangCK 和 fcuandy 的可以执行 就是因为我打开了两个命令~
光启动xp_cmdshell 因为不代表能行的
我现在是用页面方式 查询出没有文件的目录了 没办法

==========================================================
'E:\'--这样指定为有效格式:以上扩展存储过程就浏览目录:
2005:

begin try
begin tran
exec master..xp_subdirs 'E:\'
commit tran
end try
begin catch
raiserror 50005 N'不存在'
rollback tran
end catch
===========================================
SQL2005 帮助文档的例子也可以执行
感觉好像print不出来
不知道前辈们是否测试过2005 的输出
fcuandy 2007-12-18
  • 打赏
  • 举报
回复
sql2005下默认的xp_cmdshell过程是禁用的,楼主请确认你已启用它.
FinalKing 2007-12-18
  • 打赏
  • 举报
回复
我想在sql执行 如果在页面执行的话我可以取出路径然后 用test.exists() 判断 不知道有没有捷径
FinalKing 2007-12-18
  • 打赏
  • 举报
回复
liangCK 和 fcuandy 的可以执行 但是没有结果,我叫别人测试了你们的那个语句在sql2000里面能显示结果 在05里面无反应
happyflystone 的要打开一个服务 那个服务一直找不到 我慢慢 在找找
Limpire 的报语法错误
本人比较愚笨
再写清楚点我的需求 恳请高手指点~
我得表名是chery 这个表下面有几十万数据,而有个字段时专门标识绝对路径的 字段名为c3
c3 字段下面都有值
我想得到 在该路径下没有文件的结果显示出来。。。我的环境是sql2005
求救-_-||没分了 希望高手不吝赐教
长安宁 2007-12-18
  • 打赏
  • 举报
回复
记得存储过程里面有个cmdshell之类的东西,只不过,执行了东西,由于指定终端所以看不到,执行的界面,只能看到进程;

if exist "D:/aaa.txt" (echo 1) else (echo 0)

正如楼上所说的语法

SQL codedeclare @i int
exec @i = master.dbo.xp_cmdshell 'if exist "D:/aaa.txt" (echo 1) else (echo 0)',no_output
if @i = 0 --> exists
if @i = 1 --> not exists
长安宁 2007-12-18
  • 打赏
  • 举报
回复
记得存储过程里面有个cmdshell之类的东西,只不过,执行了东西,由于指定终端所以看不到,执行的界面,只能看到进程;

if exist "D:/aaa.txt" (echo 1) else (echo 0)

正如楼上所说的语法
declare @i int
exec @i = master.dbo.xp_cmdshell 'if exist "D:/aaa.txt" (echo 1) else (echo 0)',no_output
if @i = 0 --> exists
if @i = 1 --> not exists
中国风 2007-12-18
  • 打赏
  • 举报
回复
'E:\'--这样指定为有效格式:以上扩展存储过程就浏览目录:
2005:

begin try
begin tran
exec master..xp_subdirs 'E:\'
commit tran
end try
begin catch
raiserror 50005 N'不存在'
rollback tran
end catch
中国风 2007-12-18
  • 打赏
  • 举报
回复
exec master..xp_subdirs 'E:\a'
if @@rowcount>0
print '存在'
else
print '不存在'

-----
中国风 2007-12-18
  • 打赏
  • 举报
回复
sql2005:
SQL Server 外围应用配置器—功能界面设置—启用xp_cmdshell
pt1314917 2007-12-18
  • 打赏
  • 举报
回复
强。学习了```
Limpire 2007-12-18
  • 打赏
  • 举报
回复
declare @i int
exec @i = master.dbo.xp_cmdshell 'dir D:/aaa.txt',no_output
if @i = 0 --> exists
if @i = 1 --> not exists
-狙击手- 2007-12-17
  • 打赏
  • 举报
回复
select * from OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Text;Database=d:\;','SELECT * FROM [aaa#txt]')
fcuandy 2007-12-17
  • 打赏
  • 举报
回复
DECLARE @err INT,@fso INT,@fleExists BIT,@file VARCHAR(100)
SET @file='d:/aaa.txt'
EXEC @err=sp_OACreate 'Scripting.FileSystemObject',@fso OUTPUT
EXEC @err=sp_OAMethod @fso, 'FileExists',@fleExists OUTPUT,@file
EXEC @err = sp_OADestroy @fso

IF @fleExists=0
PRINT '"' + @file + '" not exists'
ELSE
PRINT 'OK'
FinalKing 2007-12-17
  • 打赏
  • 举报
回复
执行了 没任何反应 我得是SQL2005
liangCK 2007-12-17
  • 打赏
  • 举报
回复
set   nocount   on   
create table #([output] varchar(8000))

declare @file varchar(1000)
set @file='d:\aaa.txt'
declare @sql varchar(1000)
set @sql='dir '+@file
insert into # exec master..xp_cmdshell @sql

if exists(select 1 from # where [output]='找不到文件')
print '不存在该文件!'
else
print '存在该文件!'

drop table #

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧