Copier fichiers sur CD. [Résolu]

Marneus73 344 Messages postés mercredi 24 janvier 2007Date d'inscription 27 octobre 2008 Dernière intervention - 4 mars 2007 à 23:25 - Dernière réponse : Marneus73 344 Messages postés mercredi 24 janvier 2007Date d'inscription 27 octobre 2008 Dernière intervention
- 6 mars 2007 à 10:10
Bonjour à tous
Je voudrais savoir comment faire pour copier un dossier avec tous ses fichiers et sous dossiers vers un autre dossier.
Le seul probleme est que le dossier à copier est sur un CD.
Merci d'avance.
Afficher la suite 

Votre réponse

23 réponses

Meilleure réponse
cs_fauve 661 Messages postés vendredi 2 décembre 2005Date d'inscription 23 mars 2011 Dernière intervention - 6 mars 2007 à 09:47
3
Merci
Salut,


Tu n'as pas du bien comprendre ma fonction. Celle ci demande deux variables en paramètre et toi je vois que tu en as mis 3


De plus, dossier_a_copier et dossier_a_coller ne sont pas à modifier.


Il faut juste que tu copies toute la fonction et ensuite il faut l'appeler comme ceci :

Imports System.IO
Public Class Form1



Private Sub Button1_Click...  ' Pour obtenir cette procédure, il faut double cliquez sur un bouton

    copier_dossier_cd(
"Install","C:\WINDOWS\system32\M20373")

        ' Pour reprendre ton exemple
End Sub


Sub copier_dossier_cd(ByVal dossier_a_copier As String, ByVal dossier_a_coller As String)
     

 ' Exemple : si on veut copier le dossier 'X:\setup\temp\' où X est la lettre du lecteur inconnue
 '           il faut mettre dans la variable dossier_a_copier : 'setup\temp\'
 '           et dans la variable dossier_a_coller par exemple : C:\setup\temp\
 '           il faut donc appeler la fonction comme ceci :
 '           copier_dossier_cd("setup\temp","C:\setup\temp")

 Dim Fi As DriveInfo     ' Déclare une variable pour obtenir des infos sur un lecteur
 Dim drives As String() = Environment.GetLogicalDrives() ' Obtiens les lecteurs présents sur la machine
     

 For i As Integer = 0 To drives.Length - 1   ' Parcours tous les disques présent sur la machine
 Fi = New DriveInfo(drives(i))   ' Instancie le lecteur pour avoir des infos dessus
 If Fi.DriveType = DriveType.CDRom Then  ' Vrai si le lecteur est un CD-Rom
 If My.Computer.FileSystem.DirectoryExists(drives(i) + dossier_a_copier) = True Then
     ' Vrai si le dossier existe sur le lecteur CD    

 My.Computer.FileSystem.CopyDirectory(drives(i) + dossier_a_copier, dossier_a_coller)
            ' Copie le dossier
         End If
      End If
   Next
   MsgBox("Copie effectuée...", MsgBoxStyle.OkOnly)
   ' Affiche un message quand la copie est terminée...
End Sub

Merci cs_fauve 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 120 internautes ce mois-ci

Commenter la réponse de cs_fauve
cs_Willi 2381 Messages postés jeudi 12 juillet 2001Date d'inscription 13 février 2015 Dernière intervention - 4 mars 2007 à 23:39
Commenter la réponse de cs_Willi
Marneus73 344 Messages postés mercredi 24 janvier 2007Date d'inscription 27 octobre 2008 Dernière intervention - 5 mars 2007 à 07:21
0
Merci
Ok merci bien
J'ai trouvé ceci:

'Exemple d'utilisation

Private

Sub Button1_Click(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
Handles Button1.Click

CopieRepertoire("C:\test"
,
"C:\test2")
End

Sub

Mais comment je fais pour trouver "C:\test" puisqu'il est censé se trouver sur CD ???

Merci d'avance.
Commenter la réponse de Marneus73
cs_Willi 2381 Messages postés jeudi 12 juillet 2001Date d'inscription 13 février 2015 Dernière intervention - 5 mars 2007 à 09:30
0
Merci
Je ne vois pas le problème.
Trouver la lettre du lecteur cd contenant ton dossier ?
Commenter la réponse de cs_Willi
Marneus73 344 Messages postés mercredi 24 janvier 2007Date d'inscription 27 octobre 2008 Dernière intervention - 5 mars 2007 à 09:56
0
Merci
C'est ça monb pb comment on trouve cette lettre ???
Commenter la réponse de Marneus73
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 5 mars 2007 à 10:18
0
Merci
Le problème c'est que certains PC ne possèdent qu'un seul cd-rom, d'autres, 2, 3 etc..
As-tu un critère afin de savoir quel cd-rom trouver ?

@++


  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
Commenter la réponse de mortalino
Marneus73 344 Messages postés mercredi 24 janvier 2007Date d'inscription 27 octobre 2008 Dernière intervention - 5 mars 2007 à 10:25
0
Merci
Le seul critere est le dossier à copier doit etre dans ce lecteur, sinon, le reste m'importe peu.
Commenter la réponse de Marneus73
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 5 mars 2007 à 10:26
0
Merci
En VB6, avec la classe WMI LogicalDrive, tu peux lister tout un tas d'infos, je t'ai laissé le principal, ici ça ne listera que
les cd-rom, et donera leur lettre d'affectation :

Option Explicit

Private Sub Form_Load()
'   [WMI Win32 Helper - Win32_LogicalDisk]
    On Local Error Resume Next
    Dim sComputerName As String, WMI_Obj As Object, WMI_ObjProps As Object, ObjClsItem As Object
    sComputerName = Environ$("COMPUTERNAME")
    Set WMI_Obj = GetObject("winmgmts:\" & sComputerName & "\root\cimv2")
    Set WMI_ObjProps = WMI_Obj.ExecQuery("SELECT * FROM Win32_LogicalDisk", , 48)

    For Each ObjClsItem In WMI_ObjProps
        If ObjClsItem.Description = "Disque
CD-ROM" Then
            Debug.Print "Description :
" & ObjClsItem.Description
            Debug.Print "DeviceID : " & ObjClsItem.DeviceID
            Debug.Print vbCrLf
        End If
    Next ObjClsItem

    Set ObjClsItem = Nothing
    Set WMI_ObjProps = Nothing
    Set WMI_Obj = Nothing
End Sub


~ <small>[code.aspx?ID=39466 Mortalino] ~
Colorisation automatique</small>

@++


  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
Commenter la réponse de mortalino
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 5 mars 2007 à 10:27
0
Merci
Ok, mais on sait comment le nom de ton dossier. Tu le connais ?

@++


  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
Commenter la réponse de mortalino
cs_Willi 2381 Messages postés jeudi 12 juillet 2001Date d'inscription 13 février 2015 Dernière intervention - 5 mars 2007 à 10:47
0
Merci
OK, version .net.
Itération sur tout les lecteurs; si lecteur CD et cd présent, ont vérifie la présence de ton dossier et on récupère son chemin complet dans sChemin.
++

Dim sCheminCD
As
String

For
Each d
As IO.DriveInfo
In IO.DriveInfo.GetDrives()

If d.DriveType = IO.DriveType.CDRom
AndAlso d.IsReady
Then

If IO.Directory.Exists(IO.Path.Combine(d.RootDirectory.Name,
"TonDossier"))
ThensCheminCD = IO.Path.Combine(d.RootDirectory.Name,

"TonDossier")

End
If

End
If

Next
Commenter la réponse de cs_Willi
BruNews 21054 Messages postés jeudi 23 janvier 2003Date d'inscription 7 novembre 2014 Dernière intervention - 5 mars 2007 à 11:26
0
Merci
Ce ne sont pas les 3 premiers cacarctères de App.Path tout simplement ???

ciao...
BruNews, MVP VC++
Commenter la réponse de BruNews
jmfmarques 7668 Messages postés samedi 5 novembre 2005Date d'inscription 22 août 2014 Dernière intervention - 5 mars 2007 à 11:29
0
Merci
Je préfèrerais en ce qui me concerne laisser le choix à l'utilisateur, tout en contrôlant ce qu'il fait, toutefois.
Si un nom de dossier est connu, c'est facoile !

Avec VB6 il suffirait d'une drivelistbox et d'une dirlistbox
l'utilisateur double clique sur son dossier (pour le faire remonter) puis confirme par un click une fois ce dossier remonté :

Ainsi

Private Sub Dir1_Click()
  nom_dossier = "aa" ' ici le nom de dossier connu
  If Dir1.Path = Left(Drive1.Drive, 2) & "" & nom_dossier Then
    MsgBox Left(Drive1.Drive, 2) ' donnera le nom du volume qui contient ce dossier
  End If
End Sub


Private Sub Drive1_Change()
 Dir1.Path = Drive1.Drive
End Sub


 
Commenter la réponse de jmfmarques
jmfmarques 7668 Messages postés samedi 5 novembre 2005Date d'inscription 22 août 2014 Dernière intervention - 5 mars 2007 à 11:36
0
Merci
Ce que j'ai dit, bien évidemment, retient la seulehypothèse d'un lancement de programme (non sur le CD) en vue de copier le répertoire d'un CD... (identification du bon CD).

Car il est vrai que si le programme exe est lui même sur le CD, le problème d'identification de ce CD n'existe plus, puiqu'on le connait par définition avec App.Path...
Commenter la réponse de jmfmarques
Marneus73 344 Messages postés mercredi 24 janvier 2007Date d'inscription 27 octobre 2008 Dernière intervention - 5 mars 2007 à 13:00
0
Merci
Juste pour info, je suis sur vb 2005 express
Commenter la réponse de Marneus73
cs_fauve 661 Messages postés vendredi 2 décembre 2005Date d'inscription 23 mars 2011 Dernière intervention - 5 mars 2007 à 13:34
0
Merci
Salut,


Pour copier un dossier :


My.Computer.FileSystem.CopyDirectory(chemin_dossier_1, chemin_dossier_2)


Exemple :


My.Computer.FileSystem.CopyDirectory("D:/dossier1/", "C:/dossier2")


@+
Commenter la réponse de cs_fauve
Marneus73 344 Messages postés mercredi 24 janvier 2007Date d'inscription 27 octobre 2008 Dernière intervention - 5 mars 2007 à 19:47
0
Merci
Merci et pour recup la lettre du lecteur en vb 2005 ?
Commenter la réponse de Marneus73
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 5 mars 2007 à 19:56
0
Merci
Ca dépend,
et si il y a plusieurs lecteurs, comment fais-tu pour savoir lequel est celui que tu veux ?

Regarde du côté de Win32_LogicalDisk, tu peux lister tous les lecteurs, et différencier les Disques durs des lecteurs cd-rom

@++


  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
Commenter la réponse de mortalino
cs_fauve 661 Messages postés vendredi 2 décembre 2005Date d'inscription 23 mars 2011 Dernière intervention - 5 mars 2007 à 21:12
0
Merci
Salut,

Voici le code :

Sub copier_dossier_cd(ByVal dossier_a_copier As String, ByVal dossier_a_coller As String)
  ' Exemple : si on veut copier le dossier 'X:\setup\temp\' où X est la lettre du lecteur inconnue
  '           il faut mettre dans la variable dossier_a_copier : 'setup\temp\'
  '           et dans la variable dossier_a_coller par exemple : C:\setup\temp\
  '           il faut donc appeler la fonction comme ceci :
  '                    copier_dossier_cd("setup\temp\","C:\setup\temp\")

 Dim Fi As DriveInfo     ' Déclare une variable pour obtenir des infos sur un lecteur
 Dim drives As String() = Environment.GetLogicalDrives() ' Obtiens les lecteurs présents sur la machine
   For i As Integer = 0 To drives.Length - 1   ' Parcours tous les disques présent sur la machine
      Fi = New DriveInfo(drives(i))   ' Instancie le lecteur pour avoir des infos dessus
      If Fi.DriveType = DriveType.CDRom Then  ' Vrai si le lecteur est un CD-Rom
         If My.Computer.FileSystem.DirectoryExists(drives(i) + dossier_a_copier) = True Then
            ' Vrai si le dossier existe sur le lecteur CD
            My.Computer.FileSystem.CopyDirectory(drives(i) + dossier_a_copier, dossier_a_coller)
            ' Copie le dossier
         End If
      End If
   Next
   MsgBox("Copie effectuée...", MsgBoxStyle.OkOnly)
   ' Affiche un message quand la copie est terminée...
End Sub, ----

(Coloration syntaxique automatique par Kenji)
Si ce message a réglé ton problème, n'oublies pas d'accepter la réponse  
Commenter la réponse de cs_fauve
Marneus73 344 Messages postés mercredi 24 janvier 2007Date d'inscription 27 octobre 2008 Dernière intervention - 5 mars 2007 à 21:23
0
Merci
Merci ,
Je viens de rentrer ton code juste apres "Public Class Form1", sans rien toucher et VB me dit que "DriveInfo" n'est pas défini, et "DriveType" non déclaré !
Commenter la réponse de Marneus73
cs_fauve 661 Messages postés vendredi 2 décembre 2005Date d'inscription 23 mars 2011 Dernière intervention - 5 mars 2007 à 21:25
0
Merci
Salut,

Ah oui, j'ai oublié, il faut que tu rajoute avant Public Class Form1

Imports System.IO

Et là, ca va fonctionner

Si ce message a réglé ton problème, n'oublies pas d'accepter la réponse  
Commenter la réponse de cs_fauve

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Copier fichiers sur CD. - page 2