Nicomendox Ответов: 1

Как я могу скопировать файлы с помощью переименования, если файлы уже существуют в папке назначения ?


Я хочу сделать переименованную копию в папке назначения...

Целевая папка имеет вложенные папки, а в вложенных папках есть файлы с одинаковыми именами в целевых папках.

File1.Txt
File2.jpg
file3.docx
file4.exe
file5.формат PDF
...

и при копировании файлов я хочу переименовать файлы, помещенные с определенным carecter или буквой или любым другим видом...

file1_a.txt
File2_a.jpg
file3_a.docx
file4_a.exe
file5_a.формат PDF

как я могу это сделать ?

Продвинутая благодарность.

Что я уже пробовал:

Imports System.IO

Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        FolderBrowserDialog1.SelectedPath = ""

    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        TextBox1.Text = ""
        If RadioButton1.Checked = True Then
            If vbOK = FolderBrowserDialog1.ShowDialog Then
                TextBox1.Text = FolderBrowserDialog1.SelectedPath
            End If
        Else
            OpenFileDialog1.ShowDialog()
            TextBox1.Text = OpenFileDialog1.FileName
        End If
    End Sub

    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
        Application.Exit()

    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        TextBox2.Text = ""
        'If RadioButton1.Checked = True Then
        If vbOK = FolderBrowserDialog1.ShowDialog Then
            TextBox2.Text = FolderBrowserDialog1.SelectedPath
        End If
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Dim location As String
        Dim locationsave As String
        location = TextBox1.Text
        locationsave = TextBox2.Text

        Dim parts As String() = location.Split(New Char() {"\"c}) 'Dzieli plik 
        Dim filename As String = parts(parts.Count - 1) 'pobiera z podzielonego pliku tylko nazwę pliku który kopiujemy

        If RadioButton1.Checked = True Then
            My.Computer.FileSystem.CopyDirectory(location, locationsave, True)

        Else
            My.Computer.FileSystem.CopyFile(location, locationsave, True)
            Label3.Text = "Compleated" & locationsave
        End If

    End Sub
End Class

1 Ответов

Рейтинг:
1

OriginalGriff

Воспользуйся File.Exists чтобы проверить, есть ли файл уже там. Если это не так, вы можете идти.
Если это так, то используйте каталог.GetFiles, чтобы найти все имена файлов "used suffix" :

Dim files As String() = Directory.GetFiles(destPath, filenameWithoutExtension & "_*")
Затем вы можете найти "последнюю версию" и сгенерировать свое новое имя.

Я бы настоятельно рекомендовал вам использовать цифры вместо букв: что вы собираетесь делать, когда обнаружите, что "file1_z" уже существует? Вместо этого используйте числа:
file1.txt
file1.00001.txt
file1.00002.txt
...
С ним гораздо проще работать в долгосрочной перспективе.