如何将扩展添加到相应的文件类型 - 编辑和更新?

问题描述:

有两种类型的文件; TIF,& TXT存储在两个不同的(Windows Server 2008和联网的附加存储)服务器,共享和文件夹中,没有任何扩展名。 文件将被复制到另一个存储区。大约9200万个文件。两种不同文件类型中的任何一种都可以在任何文件夹中。实施例下面给出:如何将扩展添加到相应的文件类型 - 编辑和更新?

服务器名\共享\文件夹\文件名

  1. \ app_hpf \ fcfs_data \ HPF01 \ Arch037 \ 1767 \ 144
  2. \ app_hpf \ fcfs_data \ HPF01 \ Arch037 \ 1767 \ 146

除了报告所需的其他列以外,SQL Server数据库还有一个视图,其中包含文件类型列和每个文件的UNC列。使用case语句,我可以扩展添加到UNC路径显示在下面的两个例子:

与扩展UNC的例子使用CASE语句,

`(`case when filetype = 'PAG' THEN cabinet.dbo.Imnet2UNC(imnet) + '.TIF' when filetype = 'CLD' THEN cabinet.dbo.Imnet2UNC(imnet) + '.TXT' END)` 
  1. \ app_hpf \ fcfs_data加入\ HPF01 \ Arch037 \ 1767 \ 144.TXT
  2. \ app_hpf \ fcfs_data \ HPF01 \ Arch037 \ 1767 \ 146.TIF

现在我希望能够添加扩展到这些文件,这样当用户点击上在报告中的UNC路径中,他们能够自动打开文件而不是选择一个应用程序来打开它。

完成此任务的不同和/或最佳方式是什么?我们可以编写某种脚本,它基本上循环遍历sql server视图中的记录,识别文件类型,最后通过添加适当的扩展名来重命名文件。

我期待在这方面的帮助。

谢谢!

P.S.这是我第一次在技术论坛上发布一个问题。感谢大家指导我如何在Stack Overflow上发布问题。

+0

你只想读DB一行在时间和扩展应用到文件,假设你有权限? – henrikstroem

+0

我有权限。我们有9200万条记录,因此有9200万个文件。我们无法编写某种脚本来自动执行此操作? – iTee

+0

如果你有这么多的图像,是的,我会建议你写一个脚本。 – henrikstroem

下面的解决方案中给出:

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; 
+0

UNC = cabinet.dbo.Imnet2UNC(imnet) – iTee