EXEC master.sys.xp_fixeddrives
execute master.sys.xp_dirtree 'c:',1
execute master.sys.xp_dirtree 'c:\Documents and Settings',1
execute master.sys.xp_dirtree 'c:\Documents and Settings\All Users',1
execute master.sys.xp_dirtree 'c:\Documents and Settings\All Users\Application Data',1
列出目录下文件和文件夹
execute master.sys.xp_dirtree 'c:',1,1
或者用CMDSHELL功能实现列出所有文件夹下面的文件
USE [AccessLog]
GO
/****** Object: StoredProcedure [dbo].[DBTools_SYS_DirectoryGetList] Script Date: 2012/8/16 11:13:14 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*------------------------------------
-- 用途: 列出目标文件夹下的所有文件
-- 项目名称:
-- 说明:
-- 时间: 2012-07-12
-- 编写者:
--------------------------------------
-- 修改记录:
-- 编号 修改时间 修改人 修改原因 修改标注
------------------------------------*/
/* 测试语句
DECLARE @R INT
EXEC @R=DBTools_SYS_DirectoryGetList 'D:\'
SELECT @R
*/
ALTER PROCEDURE [dbo].[DBTools_SYS_DirectoryGetList]
(
@DIR NVARCHAR(128)
)
AS
BEGIN
SET NOCOUNT ON
DECLARE @SQL NVARCHAR(MAX),@Return INT=0
CREATE TABLE #TEMP (RecNo INT IDENTITY,OUTPUT NVARCHAR(100))
SET @SQL=N'EXEC sp_configure ''show advanced options'',1
RECONFIGURE WITH OVERRIDE;
EXEC sp_configure ''xp_cmdshell'',1
RECONFIGURE WITH OVERRIDE;
INSERT INTO #TEMP(OUTPUT)
EXEC xp_cmdshell ''dir '+@DIR+'\*.bak'' --调用DOS命令列出文件夹;
EXEC sp_configure ''xp_cmdshell'', 0
RECONFIGURE WITH OVERRIDE;
EXEC sys.sp_configure N''show advanced options'', N''0''
RECONFIGURE WITH OVERRIDE;
'
PRINT @SQL
EXEC(@SQL)
--EXEC sp_executesql @SQL,N'@Return INT OUTPUT',@Return OUTPUT
SELECT RIGHT(OUTPUT,CHARINDEX(' ',REVERSE(OUTPUT))-1)
FROM #TEMP
WHERE OUTPUT LIKE '%.bak'
END