1

次のコードを使用して、フラッシュ ドライブのフォルダー内の特定のファイルを削除し、残りのファイルを別のフォルダーにコピーしようとしています。プログラムが実行され、ボタンを押すと、プログラムは過去 1 年以内に変更されていないファイルを削除しますが、残りのファイルを抽出して別のフォルダーに配置することはしません。

誰かが理由を知っていますか?

Imports System.IO

Public Class frmExtractionator

    Dim txtFiles1 As Control

    Private Sub btnStart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnStart.Click

        Dim sourceDirectory As String = "E:\CopierFolderforTestDriveCapstone"
        Dim archiveDirectory As String = "E:\FilesExtracted"

        Try
            DeleteUnmodifiedFiles(sourceDirectory, 365)

            Dim txtFiles = Directory.EnumerateFiles(sourceDirectory)

            If (Not System.IO.Directory.Exists(archiveDirectory)) Then
                System.IO.Directory.CreateDirectory(archiveDirectory)
            End If

            For Each currentFileLoc As String In txtFiles
                Dim fileName = currentFileLoc.Substring(sourceDirectory.Length + 1)
                File.Move(currentFileLoc, Path.Combine(archiveDirectory, fileName))
            Next
        Catch eT As Exception
            Console.WriteLine(eT.Message)
        End Try
    End Sub

    Private Sub DeleteUnmodifiedFiles(ByVal directoryName As String, ByVal modificationThresholdDays As Integer)
        Dim folder As New DirectoryInfo(directoryName)
        Dim thresholdDate As Date
        Dim wasModifiedSinceThreshold As Boolean
        For Each file As FileInfo In folder.GetFiles
            thresholdDate = DateTime.Now().AddDays(-1 * modificationThresholdDays)
            wasModifiedSinceThreshold = (file.LastWriteTime > thresholdDate)
            If (Not wasModifiedSinceThreshold) Then file.Delete()
        Next
        MessageBox.Show("Deleting Files")
    End Sub
End Class
4

1 に答える 1

1

これにより、1 年間変更されていないソース ディレクトリ内のファイルが削除され、残りのファイルがすべて宛先ディレクトリに移動されます...

Private Sub btnStart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnStart.Click
    Dim fileListA() As String
    fileListA = (IO.Directory.GetFiles("C:\Scource_Directory"))
    For Each i As String In fileListA
        If (IO.File.GetLastWriteTime(i).ToShortDateString.Substring(6)) < (CType(DateTime.Now.Year.ToString, Integer) - 1) Then
            IO.File.Delete(i)
        End If
    Next
    Dim fileListB() As String
    fileListB = (IO.Directory.GetFiles("C:\Scource_Directory"))
    For Each i As String In fileListB
        IO.File.Move(i, "Destination_Directory")
    Next
End Sub
于 2013-04-11T11:31:57.483 に答える