按文件创建日期归档文件

时间:2013-11-12 19:29:21

标签: .net visual-studio-2010 filesystems vb.net-2010

我试图让我的脚本工作,但似乎是在创建错误的预期结果。我有一个包含1000个压缩文件的文件夹,格式为“Processedyyyddmmhhmmss.xml.gz”。我试图将文件移动到另一个服务器位置,并根据创建的日期将它们放在日期文件夹中。我发现创建的日期不正确,文件被放置在文件夹中但分散在不同的日期,我无法找到完成此操作的逻辑方法。这就是我所拥有的:

        Dim files As String() = Directory.GetFiles(directoryStuff)
        For i As Integer = 0 To files.Count - 1
            counter += 1
            If files(i).EndsWith(".gz") Then
                templist.Add(files(i))
            Else
                Continue For
            End If

            If counter >= 100 Then
                Dim objInfo As New FileInfo(files(0))
                Dim filedate As String = Regex.Replace(objInfo.Name, ".*P_", "")

'我改变了以上一行                    Dim filedate As String = objInfo.CreationTime.ToString(“yyyyMMddhhmmss”)

'因为我的日期错了

                filedate = filedate.Remove(14)
                Dim destDirectory As String = finalDestination & pathName + filedate & "\"
                Directory.CreateDirectory(destDirectory)
                For j As Integer = 0 To templist.Count - 1
                    Dim ff As String = templist.Item(j)
                    objInfo = New FileInfo(ff)
                    Dim filename As String = objInfo.Name
                    If Not ff.Contains("error") Then
                        File.Move(ff, destDirectory + filename)
                        File.Delete(ff)
                    End If

                Next
                templist.Clear()
            End If
        Next

正如您所看到的那样,逻辑是有缺陷的。我想要的是根据创建日期对文件进行分组,并将它们放在相应日期的文件夹中。我不确定如何比较文件夹中的下一个创建日期时间并相应地分隔文件。任何建议表示赞赏。

1 个答案:

答案 0 :(得分:0)

想出来了。

        Dim files = Directory.EnumerateFiles(directoryStuff)

        For i As Integer = 0 To files.Count - 1
        Try

            counter += 1

            Dim objInfo As New FileInfo(files(i))
            Dim filedate As String = Regex.Replace(objInfo.Name, ".*P_", "")
            filedate = filedate.Remove(8)
            Dim destDirectory As String = finalDestination & pathName + "_" + filedate & "\"
            If Not Directory.Exists(destDirectory) Then
                Directory.CreateDirectory(destDirectory)
            End If