使用XP_CMDSHELL重命名文件?

时间:2015-12-16 00:09:07

标签: sql sql-server-2008 file-rename xp-cmdshell

The output Screenshot我有一个脚本,它遍历SQL Server数据库表以确定文件类型,然后重命名网络共享上的文件以添加适当的扩展名。下面给出的脚本:

DECLARE @UNC AS varchar(255), @Filetype AS varchar(255), @CMD AS VARCHAR(255)


declare @HPF_Test as cursor;

SET @HPF_Test = CURSOR FOR


    select UNC, Filetype
    from HPF_Test;


OPEN @HPF_Test;
    Fetch NEXT from @HPF_Test into @UNC, @Filetype;
    While @@fetch_status=0
        begin 
            SELECT @CMD = 'REN ' + @UNC + ' '
 + RIGHT(@UNC, CHARINDEX('\', REVERSE(@UNC)) - 1)
 + case when @Filetype = 'TIF' THEN '.TIF' when @Filetype = 'TXT' THEN '.TXT' when @Filetype = 'XML' THEN '.XML' END 
 FROM HPF_Test 
           exec master..xp_cmdshell @CMD
            Fetch next from @HPF_Test into @UNC, @Filetype
        end

close @HPF_Test;
deallocate @HPF_Test;

由于大约需要重命名9200万张图像,因此整个过程需要一段时间才能运行和完成。因此,我有几个问题列出如下:

1)可以添加哪些内容来测试是否所有文件都被复制了?

2)有人建议我们分批运行脚本。我怎样才能将它分成几批?

请在这方面帮助我。我是这方面的新手。

谢谢!

更新

我正在测试此代码的三个文件。所以,当我运行上面的代码时,我得到三个输出,都是NULL。但是,当我尝试在表中捕获结果时,我得到两条记录1)系统找不到指定的文件& 2)NULL

我正在使用下面的脚本添加到原始脚本中以在表格中捕获结果。

CREATE TABLE #TEMP_test3(t nvarchar(255))

 insert  #TEMP_test3(t)

exec master..xp_cmdshell @CMD

 select * from

 #TEMP_test3

有谁可以帮助我这方面或者至少告诉我我在这里做错了什么?

感谢!!!

0 个答案:

没有答案