VB.Net Renommer Fichiers

Résolu
cs_MagDix Messages postés 531 Date d'inscription lundi 5 juin 2006 Statut Membre Dernière intervention 6 octobre 2012 - 28 mai 2008 à 17:13
miska59 Messages postés 6 Date d'inscription dimanche 12 mars 2017 Statut Membre Dernière intervention 8 janvier 2022 - 16 janv. 2019 à 11:15
Salut


Je veux me créer un petit prog pour renommer plus de 700 fichiers
Je veux ajouter le texte (Photo) pour chauqe fichier
Exemple
J'ai des fichier qui se nomme 220508.jpg
Je veux qu'il se nomme Photo220508.jpg


Première question: Qu'est ce que je prends comme fonction pour renommer. J'ai regarder la fonction File mais je ne trouve rien.
Deuxième question: Comment je fait pour qu'il modifie l'ensemble des fichier du répertoire. Bref qu'il, ajoute le mot Photo
à tous les fichier du répertoire ???


merci de votre aide


File.

9 réponses

cs_lim Messages postés 329 Date d'inscription jeudi 20 novembre 2003 Statut Membre Dernière intervention 10 mai 2014 7
28 mai 2008 à 17:48
Salut,

   Regarde du côte de my.Computer.FileSystem.RenameFile (fichiersource, fichierdestination) pour renommer un fichier

   Après pour récupérer tous les fichiers d'un répertoire c'est 
   Dim s() AsString = IO.Directory.GetFiles("C:")

   Tu récupère un  tableau dans lequel tu as tous tes fichiers, tu tournes en boucle et tu les renomme.

@+
LIM
3
cs_fauve Messages postés 661 Date d'inscription vendredi 2 décembre 2005 Statut Membre Dernière intervention 23 mars 2011 8
28 mai 2008 à 18:49
Salut,

Voici deux exemples de code possible :

Le premier exclus les sous-dossiers :

For Each files As String In My.Computer.FileSystem.GetFiles("C:\Temp", FileIO.SearchOption.SearchTopLevelOnly)
    ' FileIO.SearchOption.SearchTopLevelOnly cherche uniquement dans ce dossier en excluant les sous-dossiers
     Dim Fi As New System.IO.FileInfo(files) ' Instanciation du fichier trouvé
     My.Computer.FileSystem.RenameFile(files, "photo" + Fi.Name) ' Renomme le fichier
    ' files contient le chemin d'accès du fichier à renommer
    ' Fi.Name contient le nom du fichier (par exemple, C:\test.jpeg >>> Fi.Name retourne test.jpeg)
Next

Le deuxième inclus les sous-dossiers

For Each files As String In My.Computer.FileSystem.GetFiles("C:\Temp", FileIO.SearchOption.SearchAllSubDirectories)

    ' FileIO.SearchOption.SearchTopLevelOnly cherche dans ce dossier en incluant les sous-dossiers

     Dim Fi As New System.IO.FileInfo(files) ' Instanciation du fichier trouvé

     My.Computer.FileSystem.RenameFile(files, "photo" + Fi.Name) ' Renomme le fichier

    ' files contient le chemin d'accès du fichier à renommer

    ' Fi.Name contient le nom du fichier (par exemple, C:\test.jpeg >>> Fi.Name retourne test.jpeg)
Next

++
----------------------------------
Si la réponse vous convient : Réponse Acceptée
1
cs_fauve Messages postés 661 Date d'inscription vendredi 2 décembre 2005 Statut Membre Dernière intervention 23 mars 2011 8
28 mai 2008 à 18:51
Si tu as quelque chose que tu comprends pas, n'hésite pas
0
Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 11
28 mai 2008 à 19:09
Salut,

En fait je viens de mettre ce code dans un autre post:

       ' Trouver toutes les images JPG du dossier:
        Dim files() As String = IO.Directory.GetFiles("C:", "*.jpg", IO.SearchOption.TopDirectoryOnly)
       ' Parcourir chaque fichier
        For Each file As String In files
            ' Le nom du dossier
            Dim dossier As String = IO.Path.GetDirectoryName(file)
            ' Le nom du fichier
            Dim fichier As String = IO.Path.GetFileName(file)
            ' Le nouveau nom = dossier + "photo " + fichier
            Dim nouveauNom As String = IO.Path.Combine(dossier, "photo " & fichier)
            ' renommer le fichier
            IO.File.Move(file, nouveauNom)
        Next

Tu peux changer IO.SearchOption.TopDirectoryOnly en IO.SearchOption.AllDirectories pour inclure les sous-dossiers.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_aus3004 Messages postés 319 Date d'inscription jeudi 1 avril 2010 Statut Membre Dernière intervention 16 mars 2011 1
18 août 2010 à 17:21
Salut les gars

Je vous remercie pour l'aide que vous avez apportez à magdix et qui m'a beaucoup instruit.

En faite, j'ai besoin de faire ceci:

Scanner tout un répertoire en fonction de l'extension du ficher et en incluant les sous-dossier. Tous les fichiers trouvés seront renommés par le même nom que le dossier dans lequel ils sont.
Ex: je renomme C:\nomdossier\nomfichier en C:\nomdossier\nomdossier

Votre code permet de faire la 1er phrase. Pour la seconde phrase qui est de renommer le fichier alors là j'ai passé 2h à manier et remanier votre code sans succès.

Le truc qui est vraiment dur c'est de trouver le nom du dossier sans récupérer tout d'un coup le chemin du fichier...

Merci par avance et bon dev


Ma LV2 c'est le Visual Basic, et toi ?
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
18 août 2010 à 17:56
Bonjour,
J'ai fait un programme dernièrement où il fallait que je n'ai que le nom du fichier sans son extension, je pense que cela pourra te convenir
Imports System.IO
Imports System.IO.Path
 Dim sNewFile As String
'chemin fichier 
        sNewFile = Form1.Lblcible.Text & "" 'chemin du dossier
        sNewFile &= GetFileNameWithoutExtension(Form1.FileListBox1.SelectedItem.ToString) 'nom fichier sans extension
        sNewFile &= ".tif" 'extension


Je te le donne brut, il faut chercher avec un msgBox pour voir ce qu'il sort.
Bon courage!!!
@+
Le Pivert
0
cs_aus3004 Messages postés 319 Date d'inscription jeudi 1 avril 2010 Statut Membre Dernière intervention 16 mars 2011 1
18 août 2010 à 18:05
Ouai merci encore Le Pivert ! De plus, c'est à partir de l'une de tes sources que je me suis dis "Allez bon ! J'vais tenter l'coup !".

Ton code reprend la 1er phrase de mon dicton mais de manière plus "séparée" donc je vais utiliser ton début.

Pour la seconde partie qui est de renommer le fichier par le même nom du dossier dans lequel il se trouve, t'aurais pas un idée du style : récupérer le chemin du fichier C:\dossier\fchier et de séléctionner juste le \dossier\ pour l'affecter au nom du fichier... ?





Ma LV2 c'est le Visual Basic, et toi ?
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
18 août 2010 à 20:35
Si le chemin de ton dossier est dans un TextBox, pourquoi ne poserais-tu pas cette question sur le forum:
Trouvez le dernier mot saisi dans un TextBox?
Je pense qu'il doit exister un code pour cela
0
cs_JeffC1977 Messages postés 928 Date d'inscription vendredi 10 novembre 2000 Statut Membre Dernière intervention 23 septembre 2023 4
18 août 2010 à 21:15
Bonjour je crois avoir fais un programme qui réponds à tes question... envois moi un courriel en pv et je t'enverrai ma source...

Je prend mon dossier sources
C:\images et prends tous les dossier du répertoires et je renomme l'enssemble des fichiers par rapport au nom du répertoire...


J'attends ton courriel...

Je t'envois ca des que j'ai le temps...

A+
-1
miska59 Messages postés 6 Date d'inscription dimanche 12 mars 2017 Statut Membre Dernière intervention 8 janvier 2022 1
Modifié le 16 janv. 2019 à 11:18
Bonjour, désoler pour le retard dans le forum j'ai une autre solution pour renommer tous les fichier dans un dossier!
exemple : photo-0425.pdf
photo-5625.txt..etc
il faudras deux buttons,un label renommer par 0 / 0, un textbox1.text.
voici le code si ça peux vous aider :
Imports System.IO

Public Class Form1
    Dim filePath As String = Nothing
    Dim i As Integer = 0
    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        Dim folders As New FolderBrowserDialog
        folders.ShowNewFolderButton = True
        folders.RootFolder = Environment.SpecialFolder.Desktop
        folders.Description = "Veuillez choisir un dossier !"
        If folders.ShowDialog = Windows.Forms.DialogResult.OK Then
            filePath = folders.SelectedPath
            i = CountFichier(filePath, "*.pdf|*.txt", SearchOption.TopDirectoryOnly).Length
            Label1.Text = i & "/ 0"
        Else : Exit Sub
        End If
    End Sub

    Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
        If (i > 0) AndAlso Not String.IsNullOrEmpty(TextBox1.Text) Then
            Dim count As Integer = 0
            For Each foundFile As String In CountFichier(filePath, "*.pdf|*.txt", SearchOption.TopDirectoryOnly)
                If File.Exists(foundFile) Then
                    My.Computer.FileSystem.CopyFile(foundFile, filePath & "\" & TextBox1.Text & "-" & My.Computer.FileSystem.GetName(foundFile), True)
                    count += 1
                End If
            Next
            Label1.Text = i & "/" & count
            MessageBox.Show(count & " Fichier à bien était Renommer!", "Renommer", MessageBoxButtons.OK, MessageBoxIcon.Information)
        Else
            MessageBox.Show("Veuillez entrer un mot de renommer un ou plusier fichier(s) où Veuillez selectionner un dossier pour renommer un ou plusieur fichier (s) !", "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End If
    End Sub

    Private Function CountFichier(Path As String, searchPattern As String, searchOption As SearchOption) As String()
        Dim searchPatterns() As String = searchPattern.Split("|")
        Dim files As List(Of String) = New List(Of String)
        For Each sp As String In searchPatterns
            files.AddRange(Directory.GetFiles(Path, sp, searchOption))
        Next
        files.Sort()
        Return files.ToArray
    End Function

End Class

cordialement,
0
Rejoignez-nous