CREATE PROCEDURE SPCheckDirectoryExists
(
@chkdirectory as nvarchar(4000)
)
AS
SET NOCOUNT ON
BEGIN
DECLARE @folder_exists as int
DECLARE @file_results table(file_exists int,file_is_a_directory int,parent_directory_exists int)
INSERT INTO @file_results
(file_exists, file_is_a_directory, parent_directory_exists)
EXEC MASTER.dbo.xp_fileexist @chkdirectory
SELECT @folder_exists = file_is_a_directory
FROM @file_results
--script to create directory
IF @folder_exists = 0
BEGIN
EXECUTE master.dbo.xp_create_subdir @chkdirectory
PRINT @chkdirectory + ' created on ' + @@servername
END
ELSE
PRINT 'Directory already exists'
END
Run Code Online (Sandbox Code Playgroud)
通过使用上面的存储过程,
EXEC SPCheckDirectoryExists '\\SampleNetworkpath\Test\Test1'
Run Code Online (Sandbox Code Playgroud)
它将检查并在 Test 文件夹中创建 Test1 文件夹,
\\SampleNetworkpath\Path
如果抛出错误中不存在测试文件夹 ,
如何解决这个问题,提前致谢,
您还需要检查该目录。像这样的事情,用你同样的逻辑......
CREATE PROCEDURE SPCheckDirectoryExists
(
@chkdirectory as nvarchar(4000)
)
AS
SET NOCOUNT ON
BEGIN
DECLARE @folder_exists as int
DECLARE @file_results table(file_exists int,file_is_a_directory int,parent_directory_exists int)
DECLARE @folder_results table(file_exists int,file_is_a_directory int,parent_directory_exists int)
DECLARE @chkdirectory2 nvarchar(4000) = reverse(right(reverse(@chkdirectory),len(@chkdirectory) - charindex('\',reverse(@chkdirectory))))
DECLARE @folder_exists2 int
INSERT INTO @file_results
(file_exists, file_is_a_directory, parent_directory_exists)
EXEC MASTER.dbo.xp_fileexist @chkdirectory
INSERT INTO @folder_results
(file_exists, file_is_a_directory, parent_directory_exists)
EXEC MASTER.dbo.xp_fileexist @chkdirectory2
SELECT @folder_exists = file_is_a_directory
FROM @file_results
SELECT @folder_exists2 = file_is_a_directory
FROM @folder_results
--script to create directory
IF @folder_exists = 0 and @folder_exists2 = 1
BEGIN
EXECUTE master.dbo.xp_create_subdir @chkdirectory
PRINT @chkdirectory + ' created on ' + @@servername
END
ELSE
PRINT 'Directory already exists or parent directory was invalid'
END
Run Code Online (Sandbox Code Playgroud)