日期:2014-05-18  浏览次数:20411 次

如何在sql中用扩展命令删除文件
有三个文件夹,a,b,c,每个文件夹下有若干文件(这些文件每天会生成新的)。现在想在sql中写一个作业删除文件夹下的文件,其中a,b文件夹下保留10天的文件,c文件夹下保留20天的文件。因为文件比较多,打算用批处理的命令完成,但是不知道该如何在sql中完成。请各位不吝指教

------解决方案--------------------
SQL code

exec master..xp_cmdshell 'del [路径]\[文件名]'

------解决方案--------------------
各文件的文件名里带日期的吗?
如果有,可以向用dir目录读出所有的文件名到临时表,
然后筛选出datediff大于指定天数的,然后逐个删除.
------解决方案--------------------
有一个forfiles命令,
参考 http://apps.hi.baidu.com/share/detail/706318
------解决方案--------------------
SQL code

-- 删除10天前的文件
exec master.dbo.xp_cmdshell 'forfiles /p [路径] /s /m *.* /d -10 /c "cmd /c del @file" '

-- 删除20天前的文件
exec master.dbo.xp_cmdshell 'forfiles /p [路径] /s /m *.* /d -20 /c "cmd /c del @file" '