1.先启用 xp_cmdshell 扩展存储过程:
Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/Use MasterGOExec sp_configure 'show advanced options', 1GOReconfigure;GO sp_configure 'xp_cmdshell', 1GOReconfigure;GO
(注:因为xp_cmdshell是高级选项,所以这里启动xp_cmdshell,需要先将 show advanced option 设置为 1,便可显示高级配置选项。
可以通过语句
Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ Select is_advanced From sys.configurations Where name = N ' xp_cmdshell '查看是否高级选项。
)
2.删除文件的存储过程:
Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ If object_id ( ' sp_DeleteFiles ' ) Is Not Null Drop Proc sp_DeleteFiles Go Create Proc sp_DeleteFiles ( @FilePath nvarchar ( 128 ), @SearchPattern nvarchar ( 200 ), @LastWriteTimeStart datetime , @LastWriteTImeEnd datetime ) As Set Nocount On Declare @Cmd nvarchar ( 2000 ), @OutputInfo nvarchar ( 2000 ), @Dir nvarchar ( 2000 ), @Date datetime , @FileName nvarchar ( 512 ) Declare @Tmp Table (ID int Identity ( 1 , 1 ) Primary Key , OutputInfo nvarchar ( 2000 )) Set @Cmd = N ' Dir/A:-d/S/T:W/4 ' + @FilePath + N ' \ ' + Rtrim ( @SearchPattern ) /* Dos显示文件代码 */ Insert Into @Tmp Exec xp_cmdshell @Cmd Declare Cur_dir Cursor For Select OutputInfo From @tmp Where Patindex ( ' %\% ' ,OutputInfo) > 0 Or IsDate ( substring (OutputInfo, 1 , 10 )) = 1 /* 过滤只留目录和文件列表 */ Open Cur_dir Fetch Next From Cur_dir Into @OutputInfo While @@Fetch_Status = 0 Begin If Patindex ( ' %\% ' , @OutputInfo ) > 0 /* 提取目录 */ Set @Dir = Substring ( @OutputInfo , 1 , Len ( @OutputInfo ) - Charindex ( Char ( 32 ), Reverse ( @OutputInfo ))) Else Begin Set @Date = Substring ( @OutputInfo , 1 , 10 ) If @Date Between @LastWriteTimeStart And @LastWriteTImeEnd Begin /* 不同的环境,如在繁体系统,这里取文件名的处理方法可能不同 */ Set @OutputInfo = Stuff ( @OutputInfo , 1 , 17 , '' ) /* 过滤掉日期部分 */ Set @OutputInfo = Stuff ( @OutputInfo , 1 , Patindex ( ' %[0-9]% ' , @OutputInfo ) - 1 , '' ) /* 过滤掉前缀的空格部分 */ Set @FileName = Stuff ( @OutputInfo , 1 , Charindex ( Char ( 32 ), @OutputInfo ), '' ) /* 取得文件名 */ Set @Cmd = N ' Del ' + @Dir + N ' \ ' + @FileName Exec xp_cmdshell @Cmd ,No_output Print N ' 已删除文件: ' + @Dir + N ' \ ' + @FileName End End Fetch Next From Cur_dir Into @OutputInfo End Close Cur_dir Deallocate Cur_dir Go
3. 测试:
Exec sp_DeleteFiles ' F:\test ' , ' *.exe ' , ' 20011001 ' , ' 20091119 ' /* 已删除文件: F:\test\Gao\高2009-8-14\B2000HR_FuXing_CHN_060406\HR_FuXing_071101.exe 已删除文件: F:\test\Gao\高2009-8-14\B2000HR_FuXing_CHN_060406\HR_FuXing_080127.exe 已删除文件: F:\test\Gao\高2009-8-14\B2000HR_FuXing_CHN_060406\HR_FuXing_080326.exe 已删除文件: F:\test\Gao\高2009-8-14\B2000HR_FuXing_CHN_060406\HR_FuXing_080328.exe 已删除文件: F:\test\Gao\高2009-8-14\B2000HR_FuXing_CHN_060406\HR_FuXing_080504.exe 已删除文件: F:\test\Gao\高2009-8-14\B2000HR_FuXing_CHN_060406\HR_FuXing_080628.exe */转载于:https://www.cnblogs.com/deepwishly/archive/2011/11/30/2551127.html
相关资源:JAVA上百实例源码以及开源项目