Renommer un fichier

Fermé
jennyfer92 Messages postés 10 Date d'inscription jeudi 17 janvier 2013 Statut Membre Dernière intervention 22 janvier 2013 - 22 janv. 2013 à 01:31
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 - 22 janv. 2013 à 14:12
Bonjour,

Comment peut-on procéder pour renommer un fichier grace à une variable string

par exemple, supposons j'ai le fichier c:\essais\test.txt

j'ai un programme qui me donne une valeur string
dim nom as string

et je veux que mon fichier s'appelle désormais c:\essais\nom.txt à la place de c:\essais\test.txt


si je fais ca
My.Computer.FileSystem.RenameFile("c:\essais\test.txt", "c:\essais" & "\" & nom)

ca ne fonctionne pas !!!


A voir également:

13 réponses

eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
Modifié par eriiic le 22/01/2013 à 08:17
Bonjour,

chemin = "c:\essais\"
Name chemin & "test.txt As chemin & nom

eric

Oupss: erreur d'inattention. Je viens de répondre en VBA, je ne sais pas si ça marche en VB (Rename ?).
Pour les lecteurs ultérieurs tu devrais peut-être préciser la version utilisée.

Jamais tu ne répondras à un mp non sollicité...
Bon, ça c'est fait.
0
jennyfer92 Messages postés 10 Date d'inscription jeudi 17 janvier 2013 Statut Membre Dernière intervention 22 janvier 2013
22 janv. 2013 à 09:58
Merci Eric mais en fait c'est en visual basic express 2010
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
22 janv. 2013 à 10:05
et il ne connait pas rename ? Tu as fait F1 dessus ?
0
jennyfer92 Messages postés 10 Date d'inscription jeudi 17 janvier 2013 Statut Membre Dernière intervention 22 janvier 2013
22 janv. 2013 à 10:21
Eh bien en fait quand il débug, il me donne cette explication :

L'exception System.ArgumentException n'a pas été gérée
Message=L'argument 'newName' doit être un nom et non un chemin d'accès relatif ou absolu : 'C:\essais\devis2001.txt'.
Nom du paramètre : newName
ParamName=newName
Source=Microsoft.VisualBasic


A savoir qu'il faut mettre un nom et pas une string dans le nouveau nom

C'est filerename que j'utilise, j'essaie rename direct là mais j'ai message d'erreur
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
22 janv. 2013 à 10:29
A savoir qu'il faut mettre un nom et pas une string dans le nouveau nom
Le message te dit de ne mettre QUE le nom du fichier (qui est obligatoirement un string, que ce soit avec ou sans variable), sans le chemin pour NewName
Fait ce qu'il te dit.
Rename("c:\essais\test.txt", nom)

Et tu as oublié de répondre ici :
https://forums.commentcamarche.net/forum/affich-26932016-comment-lire-les-10-premieres-ligne-en-visual-basic-expres-2010

eric
0
jennyfer92 Messages postés 10 Date d'inscription jeudi 17 janvier 2013 Statut Membre Dernière intervention 22 janvier 2013
22 janv. 2013 à 10:36
Ah oui je vais y répondre, je suis sotte j'avais réussi entretemps mais là quand je fais cela, j'ai un nouveau message d'erreur
Le processus ne peut pas accéder au fichier, car il est utilisé par un autre processus.

ca se complique !!
merci en tout cas pour ton aide, tu penses que si plutot que renommer , j'ouvre le fichier et je l'enregistre sous, ca peut mieux marcher ?
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
Modifié par eriiic le 22/01/2013 à 11:51
Tu ne peux renommer un fichier ouvert, est-ce le cas ?
Pour la suite je laisse la main à lermite (salut) qui doit sûrement plus pratiquer vb que moi.
eric
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
22 janv. 2013 à 11:10
Bonjour vous deux,
Tu dois d'abord le copier dans le nouveau répertoire (ou le déplacer si existe en VB.Net)
Le supprimer dans le répertoire précédant.
Et enfin, tu peu renommer dans le nouveau répertoire.
A+
0

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

Posez votre question
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
22 janv. 2013 à 12:09
Bonjour à tous,

Ayant VB Net, j'ai pu faire des tests et voici ma proposition:

Il faut d'abord créer l'import : Imports System.IO

Après quoi, il suffit de faire : File.Move(NomAncien, NomNouveau)

Cordialement.
0
jennyfer92 Messages postés 10 Date d'inscription jeudi 17 janvier 2013 Statut Membre Dernière intervention 22 janvier 2013
22 janv. 2013 à 12:16
Merci à tous les deux, je suis contente, ça marche
j'ai suivi vos conseils
voila le code qui fonctionne donc

My.Computer.FileSystem.CopyFile("c:\essais\test.txt", "c:\essais\aaa.txt")
My.Computer.FileSystem.RenameFile("c:\essais\aaa.txt", nom)
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
Modifié par lermite222 le 22/01/2013 à 12:36
De toute façon tu à une erreur dans la ligne..
My.Computer.FileSystem.RenameFile("c:\essais\test.txt", "c:\essais" & "\" & nom)

Y faut pas le chemin dans le nouveau nom
My.Computer.FileSystem.RenameFile("c:\essais\test.txt", nom) 

Le fichier que tu veux renommer, c'est le même que celui employer dans ton poste précédant ?
Et finalement, quel est Exactement l'erreur signalée ?
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
0
jennyfer92 Messages postés 10 Date d'inscription jeudi 17 janvier 2013 Statut Membre Dernière intervention 22 janvier 2013
22 janv. 2013 à 12:51
oui exact lermite222, il y avait une erreur mais j'ai rectifié
là ca marche avec

My.Computer.FileSystem.CopyFile("c:\essais\test.txt", "c:\essais\aaa.txt")
My.Computer.FileSystem.RenameFile("c:\essais\aaa.txt", nom)

sinon heliotte, quand je veux faire ton move qui est plus élégant, il me dit lors du débogage que le fichier est utilisé par un autre processus
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
22 janv. 2013 à 13:14
Tu ne répond pas à mes questions !!!!

Le fichier que tu veux renommer, c'est le même que celui employer dans ton poste précédant ?
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
Modifié par lermite222 le 22/01/2013 à 13:25
Autre..
Tu déplace le fichier dans un autre répertoire ?
@Heliote -< Suis d'accord avec toi mais j'aimerais des réponses aux questions, sinon ça va partir dans tout les sens

Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
0
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
22 janv. 2013 à 14:12
Bonjour Lermite,

ok
0
jennyfer92 Messages postés 10 Date d'inscription jeudi 17 janvier 2013 Statut Membre Dernière intervention 22 janvier 2013
22 janv. 2013 à 13:38
oui c'est le même fichier que dans l'autre post
et je voulais pas le déplacer
juste renommer un fichier
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
22 janv. 2013 à 14:08
C'est bien ce que je pensais..
Dans la procédure que tu emploi pour lire les 10 première lignes...
1°) Si tu ouvre un fichier qui comporte moins de 10 lignes tu va tomber sur le Catch et tu te demanderas pourquoi ?
2°) Mais la c'est mon expérience en VB6 qui parle..
End Using ferme le process StreamReader mais ne ferme pas le fichier.
En reprenant le code d'Heliote, essaye en ajoutant les deux lignes..

           Using sr As New StreamReader(CheminFichier & NomFichier)
                Dim LigneLue As String = ""
                For i = 1 To 10
                    LigneLue = sr.ReadLine
                    TextBox3.Text = TextBox3.Text & LigneLue & vbNewLine
                    If sr.EndOfStream Then Exit For
                Next i
                sr.Close()
            End Using

Ensuite employer simplement ta fonction RenameFile qui va fonctionner
A+
0
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
22 janv. 2013 à 12:25
Bonjour à tous,

Je persiste à dire qu'il y a beaucoup plus simple et plus adapté :

File.Move(Dossier1 & NomAncien, Dossier2 & NomNouveau)

Le déplacement et le renommage se fait en une seule opération .. l'ancien fichier ne passe pas à la corbeille !!
-1