sql server 获取磁盘文件大小存储过程

一、存储过程创建语句如下:

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:  <moki>
-- Create date: <20140610>
-- Description: <获取磁盘文件大小>
-- @mode值为0表示输出覆盖原有文件的内容
-- 值不为0表示输出不覆盖原有文件内容
-- =============================================
CREATE PROCEDURE sp_GetFileSize
 -- Add the parameters for the stored procedure here
 @resourcefilepath VARCHAR(1024),
 @resultpath VARCHAR(1024),
 @mode INT=0
AS
BEGIN
 -- SET NOCOUNT ON added to prevent extra result sets from
 -- interfering with SELECT statements.
 SET NOCOUNT ON;
 --确定xp_cmdshell是可用的
-- ---------------------------------------------------------
-- EXEC master.dbo.sp_configure 'show advanced options', 1
-- GO
-- RECONFIGURE
-- GO
-- EXEC master.dbo.sp_configure 'xp_cmdshell', 1
-- GO
-- RECONFIGURE
-- GO
 ---------------------------------------------------------
 DECLARE @bat VARCHAR(1024)
 DECLARE @result INT 
 DECLARE @ret INT 
 EXEC master.dbo.xp_fileexist @resourcefilepath,@result out
 SET  @ret=0
 IF @result=1
 BEGIN
  IF @mode=0
  BEGIN
   SET @bat='for /f %i in ('+'"'+@resourcefilepath+'"'+') do @echo %~ni%~xi:%~zi>'+@resultpath
  END
  ELSE
  BEGIN
   SET @bat='for /f %i in ('+'"'+@resourcefilepath+'"'+') do @echo %~ni%~xi:%~zi>>'+@resultpath
  END
  EXEC master.dbo.xp_cmdshell @bat
  SET @ret=0
 END
 ELSE
 BEGIN
  PRINT @resourcefilepath+'不存在'
  SET @ret=-1 
 END
 RETURN @ret
END
GO

二、使用举例如下:

declare @filepath varchar(1024)
declare @resultpath varchar(1024)
set @filepath='D:\useful\批处理制作wifi热点\批处理制作wifi热点.docx'
set @resultpath='c:\sqlresult.txt'
EXEC MASTER.DBO.sp_GetFileSize @filepath,@resultpath,0

转载于:https://my.oschina.net/u/1426828/blog/277535

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值