写一个存储过程,判断一个文件夹是否存在?
我想写一个存储过程,往指定文件夹备份,文件夹如果存在,就往指定文件夹里备份文件,不存在的话,新建一个文件夹!
------解决方案--------------------create table #Exists (文件 int, 目录 int, 父目录)
insert #Exists master.dbo.xp_fileexist 'C:\ABC\ '
if (select 目录 from #Exists) = 1
print '存在目录:C:\ABC '
else
begin
print '不存在目录:C:\ABC '
exec master.dbo.xp_cmdshell 'md C:\ABC '
end
drop table #Exists
------解决方案--------------------其实根本不用判断文件夹是否存在,直接调用创建:
exec master.dbo.xp_cmdshell 'md C:\ABC '
如果文件夹 C:\ABC 存在,执行结果是:
/*
output
子目录或文件 C:\ABC 已经存在。
NULL
*/
如果文件夹 C:\ABC 存在,执行结果是:
/*
output
NULL
*/
至于 DOS 命令 MD 成功与否,都不会在 SQL中 raiserror。
可以用 no_output 参数把执行结果屏蔽起来:
exec master.dbo.xp_cmdshell 'md C:\ABC ',no_output
重复执行 N 次,都是:命令已成功完成。
------解决方案--------------------最简单的方法
declare @n int;
exec @n=xp_cmdshell 'dir d:\ASD ',NO_OUTPUT
IF (@n=0)
PRINT '存在 '
else
print '目录不存在 '