将一台服务器上的数据文件复制到另一台上后,需要更改其文件名,策略是:
原文件名+同步当天日期,请问如何使用ren命令使新文件名根据日期动态生成?
(小弟分少,多包含~~~~)

解决方案 »

  1.   

    declare @sql nvarchar(1000)
    set @sql = '原文件名' + convert(varchar(8), getdate(), 112)
    set @sql = 'copy 原文件名 目标路径\' + @sql
    exec master..cmdshell @sql
      

  2.   

    CREATE PROCEDURE copyFile(@desPath varchar(200),@userName varchar(50),@passWord varchar(50),@srcPath varchar(200),@fileName varchar(200))
    ASDECLARE @dateFile   AS VARCHAR(100)
    DECLARE @strSql     AS VARCHAR(200)SET @dateFile = LEFT(@fileName,LEN(@fileName)-4) + CONVERT(varchar(8), GETDATE(), 112) + RIGHT(@fileName,4)
    SET @strSql   = 'net use  ' +@desPath+ ' "' +@passWord+ '" /user:'+@userName
    --SET @strSql = 'net use \\192.168.0.5\aaa "abc" /user:administrator'
    exec master..xp_cmdshell @strSqlSET @strSql   = 'copy ' + @srcPath  + @fileName + ' ' + @desPath + '\' + @dateFile
    exec master..xp_cmdshell @strSqlGO执行:
    exec copyFile '\\192.168.0.5\sms','administrator','cccc','C:\','aaa.txt'
    将数据库服务器c;\aaa.txt文件复制到192.168.0.5服务器sms共享下并改名为aaa20070821.txt,用户名:administrator,密码:cccc
      

  3.   

    刚注意到要用REN
    执行:
    exec copyFile '\\192.168.0.5\sms','administrator','cccc','C:\','aaa.txt'
    将数据库服务器c;\aaa.txt文件复制到192.168.0.5服务器sms共享下并改名为aaa20070821.txt,用户名:administrator,密码:cccc
    CREATE PROCEDURE copyFile(@desPath varchar(200),@userName varchar(50),@passWord varchar(50),@srcPath varchar(200),@fileName varchar(200))
    ASDECLARE @dateFile   AS VARCHAR(100)
    DECLARE @strSql     AS VARCHAR(200)SET @dateFile = LEFT(@fileName,LEN(@fileName)-4) + CONVERT(varchar(8), GETDATE(), 112) + RIGHT(@fileName,4)
    SET @strSql   = 'net use  ' +@desPath+ ' "' +@passWord+ '" /user:'+@userName
    --SET @strSql = 'net use \\192.168.0.5\aaa "cccc" /user:administrator'
    exec master..xp_cmdshell @strSqlSET @strSql   = 'copy ' + @srcPath  + @fileName + ' ' + @desPath + '\' + @fileName
    exec master..xp_cmdshell @strSqlSET @strSql   = 'ren '+ @desPath + '\' + @fileName + ' ' + @dateFile
    exec master..xp_cmdshell @strSql
    print @strSql
    GO