Marneus73
Messages postés344Date d'inscriptionmercredi 24 janvier 2007StatutMembreDernière intervention27 octobre 2008
-
4 mars 2007 à 23:25
Marneus73
Messages postés344Date d'inscriptionmercredi 24 janvier 2007StatutMembreDernière intervention27 octobre 2008
-
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.
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
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 5 mars 2007 à 10:26
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
cs_Willi
Messages postés2375Date d'inscriptionjeudi 12 juillet 2001StatutModérateurDernière intervention15 décembre 201823 5 mars 2007 à 10:47
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,
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 5 mars 2007 à 11:29
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
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 5 mars 2007 à 11:36
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...
cs_fauve
Messages postés661Date d'inscriptionvendredi 2 décembre 2005StatutMembreDernière intervention23 mars 20118 5 mars 2007 à 21:12
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
Marneus73
Messages postés344Date d'inscriptionmercredi 24 janvier 2007StatutMembreDernière intervention27 octobre 2008 5 mars 2007 à 21:23
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é !