[AIDE] Changer lettre lecteurs

chiquitoloco Messages postés 10 Date d'inscription vendredi 21 septembre 2007 Statut Membre Dernière intervention 8 août 2008 - 6 août 2008 à 09:05
 NHenry - 15 août 2008 à 20:54
Salut à tous!!
Depuis quelque temps je developpe avec un VB 2008 Express un petit programme pour automatiser certaines taches lors de la preparation de pc. J'ai déja trouvé pas mal d'info sur differents points sur lesquels j'ai reussi à les mettres en oeuvre, mais la je trouve rien du tous.
- En faite je souhaite lors de la preparation d'un pc, changer la lettre du lecteur de CD de "D" à "E", creer une partition avec l'espace disque libre ayant la lettre "D". J'ai deja un script .bat qui me fait deja ca, mais je voudrais tous centralisé dans mon programme VB. Si biensur il n'y a pas de solution je ferais un shell sur mon .bat.
J'ai regardé les fonctions driveInfo, My.Computer.FileSystem.GetDriveInfo, mais ca sert a avoir des info seulement.
- Ensuite je voudrais pouvoir determiner la lettre d'un lecteur CD si par exemple mon programme serais ammené à etre utilisé sur d'autre plateforme.
- Et le dernier point concerne la copie de fichier. Je voudrais copier tous le contenu d'un cd depuis la racine vers un repertoire sur un disque dur.
J'ai utilisé la fonction My.Computer.FileSystem.CopyFile("D:", "C:\Documents") mais j'ai une erreur qui me dit que je ne peux pas copier la racine. J'ai aussi essayé la fonction My.Computer.FileSystem.Copydirectory("D:", "C:\Documents") et pareil.
Donc si vous auriez des infos pour orienter mes recherches ca serai sympa car la j'avance plus.
Merci

21 réponses

gillardg Messages postés 3275 Date d'inscription jeudi 3 avril 2008 Statut Membre Dernière intervention 14 septembre 2014 2
6 août 2008 à 10:38
demande à NHenry il a résolu ce problème il y a quelques jours

bonjour chez vous!
< body>
0
bonjourcheval Messages postés 228 Date d'inscription mercredi 13 décembre 2000 Statut Membre Dernière intervention 8 août 2011
6 août 2008 à 17:22
ou bien cherche dans les derniers messages de NHenri et regarde la solution qu'il a donné.
0
chiquitoloco Messages postés 10 Date d'inscription vendredi 21 septembre 2007 Statut Membre Dernière intervention 8 août 2008
7 août 2008 à 08:11
Ok Ok je vais regarder les messages de Nhenri!!
merci bien les gars!!
0
chiquitoloco Messages postés 10 Date d'inscription vendredi 21 septembre 2007 Statut Membre Dernière intervention 8 août 2008
7 août 2008 à 08:17
Bon je viens de faire une recherche sur nhenri pour trouver les posts auxquels il a répondu mais à la lecture des titres, je ne trouves pas d'info qui m'interresse!!!
0

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

Posez votre question
gillardg Messages postés 3275 Date d'inscription jeudi 3 avril 2008 Statut Membre Dernière intervention 14 septembre 2014 2
7 août 2008 à 10:51
il y a un utilitaire qui s'appele Diskpart.exe il faut le chercher sur microsoft.com
et pour l'utiliser il vaut mieux que tu saches ce que tu fais parce que ça peut peter tes partitions !

bonjour chez vous!
< body>
0
chiquitoloco Messages postés 10 Date d'inscription vendredi 21 septembre 2007 Statut Membre Dernière intervention 8 août 2008
7 août 2008 à 13:45
ouai diskpart c'est ce que j'utilise deja avec mon .bat. Et pour les partitions je geres bien!! mon script fonctionne trés bien.
le diskpart me permet de passer le lecteur cd de "D" à "E" et ensuite de creer une nouvelle partition "Data" avec la lettre "D".
Mais ce que je voudrais c'est ne plus utiliser le script .bat et tous integrer dans VB le but etant de limité les fichiers annexe.
0
gillardg Messages postés 3275 Date d'inscription jeudi 3 avril 2008 Statut Membre Dernière intervention 14 septembre 2014 2
7 août 2008 à 14:00
as tu posé la question directement à NHenry?

bonjour chez vous!
< body>
0
chiquitoloco Messages postés 10 Date d'inscription vendredi 21 septembre 2007 Statut Membre Dernière intervention 8 août 2008
8 août 2008 à 08:21
Oui je lui ai envoyé un message perso avec le lien du post!! Y'a plus qu'a attendre maintenant!!! En attendant je me prends la tete sur autre chose!! la gestion des services wndows. J'ai trouvé la syntaxe sur msdn pour arreter ou stopper les services, mais quand je copie colle les exemples y'a plein d'erreur.
0
gillardg Messages postés 3275 Date d'inscription jeudi 3 avril 2008 Statut Membre Dernière intervention 14 septembre 2014 2
8 août 2008 à 08:49
imports system.quelques.Chose

devrait résoudre le problème

passes  le code je vais voir ça

bonjour chez vous!
< body>
0
chiquitoloco Messages postés 10 Date d'inscription vendredi 21 septembre 2007 Statut Membre Dernière intervention 8 août 2008
8 août 2008 à 09:30
C'est ServiceController pour la gestion des services, ben d'apres MSDN mais voila le liens il te sera beaucoup plus facile de comprendre. Concretement ce que je voulais faire c'etait copier le code en exemple et le readapter tous simplement à mes besoins!! Et oui n'etant pas developpeur on fait comme on peut!!!
http://msdn.microsoft.com/fr-fr/library/system.serviceprocess.servicecontroller.aspx
0
gillardg Messages postés 3275 Date d'inscription jeudi 3 avril 2008 Statut Membre Dernière intervention 14 septembre 2014 2
8 août 2008 à 09:38
Framework 3.5 = vb2008

bonjour chez vous!
< body>
0
gillardg Messages postés 3275 Date d'inscription jeudi 3 avril 2008 Statut Membre Dernière intervention 14 septembre 2014 2
8 août 2008 à 09:40
si tu es en vb6 je vois pas comment tu pourrais utiliser ce code , oublie mes trois derniers Posts

bonjour chez vous!
< body>
0
chiquitoloco Messages postés 10 Date d'inscription vendredi 21 septembre 2007 Statut Membre Dernière intervention 8 août 2008
8 août 2008 à 09:41
oui c'est ce que j'utilise, visual basic express 2008.
0
gillardg Messages postés 3275 Date d'inscription jeudi 3 avril 2008 Statut Membre Dernière intervention 14 septembre 2014 2
8 août 2008 à 10:16
MAIS [*&#$^!?§] pourquoi tu le dis pas alors

Vous êtes ici : Thèmes / Visual Basic 6 / Système / Périphériques / [http://www.vbfrance.com/infomsg_AIDE-CHANGER-LETTRE-LECTEURS_1183517.aspx?p=2 [AIDE] Changer lettre lecteurs]

bonjour chez vous!
< body>
0
chiquitoloco Messages postés 10 Date d'inscription vendredi 21 septembre 2007 Statut Membre Dernière intervention 8 août 2008
8 août 2008 à 10:29
C 'est marqué en 1ere ligne de mon premier post. Et ensuite comme il n'y a pas de theme VB 2008 j'ai posté dans visual basic 6.
0
gillardg Messages postés 3275 Date d'inscription jeudi 3 avril 2008 Statut Membre Dernière intervention 14 septembre 2014 2
8 août 2008 à 10:33
faut poster dans vb.net c'est plus proche du vb 2008 !

bonjour chez vous!
< body>
0
gillardg Messages postés 3275 Date d'inscription jeudi 3 avril 2008 Statut Membre Dernière intervention 14 septembre 2014 2
8 août 2008 à 10:35
bon allez j'ai retrouvé le code
je l'avais collé quelque part comme je fais souvent quand je trouve un truc intéressant ici ou la

bonjour chez vous!
< body>
0
gillardg Messages postés 3275 Date d'inscription jeudi 3 avril 2008 Statut Membre Dernière intervention 14 septembre 2014 2
8 août 2008 à 10:36
Module





Module1



'neccessite Diskpart.exe








'disponible sur microsoft.com








Private





Class

ClsVolume



Private

mVolNum


As





Integer








Private

mLetter


As





String 










Public





Sub





New

(


ByVal

pLine


As





String

)mVolNum =



CInt

(pLine.Substring(9, 3).Trim)mLetter = pLine.Substring(15, 1)



End





Sub








'-------------------------------------------------------------------------------








Public





ReadOnly





Property

VolNum()


As





Integer








Get








Return

mVolNum



End





Get








End





Property








'-------------------------------------------------------------------------------- 










Public





ReadOnly





Property

Letter()


As





String








Get








Return

mLetter



End





Get








End





Property








'-------------------------------------------------------------------------------- 










Public





Overrides





Function

ToString()


As





String








Return





String

.Format(


"{0} -> {1}"

, mVolNum, mLetter)



End





Function








'--------------------------------------------------------------------------------








End





Class








'-------------------------------------------------------------------------------- 

 










'''


<summary>








''' Paramètres :








''' Lecteur actuel








''' Lecteur désiré








''' ID du process père (attrendre la fermeture)








''' Process à lancer à la fin








'''


</summary>








'''












'''


<remarks></remarks>








Sub

Main(


ByVal

pParams


As





String

())



If

pParams.Length <> 4


Then








Return








End





If








Dim

lSource


As





String

= pParams(0)



Dim

lDest


As





String

= pParams(1)



Dim

lProcessID


As





Integer

=


CInt

(pParams(2))



Dim

lToStart


As





String

= pParams(3) 



Dim

lProcess


As

Diagnostics.Process



If

lProcessID <> 0


Then


lProcess = Process.GetProcessById(lProcessID)








Else


lProcess =





Nothing








End





If








Do


Threading.Thread.Sleep(2000)








Loop





While

lProcess


IsNot





Nothing





AndAlso





Not

lProcess.HasExited



Dim

ltVolumes


As

ClsVolume()lProcess =



New

Diagnostics.Process



With

lProcess.StartInfo.FileName =



"diskpart.exe"


.UseShellExecute =





False


.RedirectStandardInput =





True


.RedirectStandardError =





True


.RedirectStandardOutput =





True








End





With


lProcess.Start()


 


ltVolumes = GetListVolumes(lProcess)








Dim

lVolSrc


As

ClsVolume =


Nothing








Dim

lVolDst


As

ClsVolume =


Nothing


Console.WriteLine(





"---"

)



For





Each

lVol


As

ClsVolume


In

ltVolumes



If

lVol.Letter = lDest


Then


lVolDst = lVol


Console.ForegroundColor = ConsoleColor.Red








ElseIf

lVol.Letter = lSource


Then


lVolSrc = lVol


Console.ForegroundColor = ConsoleColor.Green








Else


Console.ForegroundColor = ConsoleColor.Gray








End





If


Console.WriteLine(lVol)








Next


Console.ForegroundColor = ConsoleColor.Gray


Console.WriteLine(





"---"

)



Dim

lLstDrives


As





New

List(


Of

IO.DriveInfo)lLstDrives.AddRange(



My

.Computer.FileSystem.Drives)



Dim

lModif


As





Boolean

=


False








Dim

lLetter


As





String

=


"D"








Do


lModif =





False








For





Each

lDrive


As

IO.DriveInfo


In

lLstDrives



If

lDrive.Name.Substring(0, 1) = lLetter


Then


lModif =





True


lLetter = Chr(Asc(lLetter) + 1)








Exit





For








End





If








Next








Loop





While

lModifConsole.WriteLine(



"Suivant disponible : {0}"

, lLetter)



If

lVolSrc


IsNot





Nothing





Then








If

lVolDst


IsNot





Nothing





Then


MoveLecteur(lProcess, lVolDst, lLetter)








End





If


MoveLecteur(lProcess, lVolSrc, lDest)








End





If


#





If

DEBUG


Then


Console.ReadKey()


#





End





If


lProcess.StandardInput.WriteLine(





"exit"

)



Do





While

lProcess.StandardOutput.ReadLine <>


"DISKPART> "








Loop


lProcess.StandardInput.WriteLine(





"exit"

)



If

lToStart.Length > 0


Then


Process.Start(lToStart)








End





If








End





Sub 










'-------------------------------------------------------------------------------- 










Private





Function

GetListVolumes(


ByVal

pProcess


As

Diagnostics.Process)


As

ClsVolume()



Dim

lLstVolumes


As





New

List(


Of

ClsVolume)pProcess.StandardInput.WriteLine(



"List volume"

)



Do





While

pProcess.StandardOutput.ReadLine <>


"DISKPART> "








Loop


pProcess.StandardInput.WriteLine(





"REM"

)



Dim

lStr


As





String

=


""








Dim

lNbLine


As





Integer

= 0



Do


lStr = pProcess.StandardOutput.ReadLine








'Console.WriteLine(lStr)








If

lStr.Length <> 0


Then








If

lNbLine >= 2


Then


lLstVolumes.Add(





New

ClsVolume(lStr))



Else


lNbLine += 1








End





If








Else


lNbLine = 0








End





If








Loop





While

lStr <>


"DISKPART> "








Return

lLstVolumes.ToArray



End





Function








'-------------------------------------------------------------------------------- 










Private





Sub

MoveLecteur(


ByVal

pProcess


As

Diagnostics.Process,


ByVal

pVolume


As

ClsVolume,


ByVal

pLetter


As





String

)pProcess.StandardInput.WriteLine(



"select volume "

+


CStr

(pVolume.VolNum))



Do





While

pProcess.StandardOutput.ReadLine <>


"DISKPART> "








Loop


pProcess.StandardInput.WriteLine(





"assign letter="

+ pLetter)



Do





While

pProcess.StandardOutput.ReadLine <>


"DISKPART> "








Loop


pProcess.StandardInput.WriteLine(





"REM"

)



Do





While

pProcess.StandardOutput.ReadLine <>


"DISKPART> "








Loop








End





Sub








'--------------------------------------------------------------------------------



End








Module 


j'ai pas testé mais ça à l'air bon

bonjour chez vous!
< body>
0
chiquitoloco Messages postés 10 Date d'inscription vendredi 21 septembre 2007 Statut Membre Dernière intervention 8 août 2008
8 août 2008 à 10:39
ok ok !! comment je peux deplacer le post alors?? ou qu'un modo le fasse!!
0
chiquitoloco Messages postés 10 Date d'inscription vendredi 21 septembre 2007 Statut Membre Dernière intervention 8 août 2008
8 août 2008 à 10:42
Ok merci je vais etudier tous ca car je comprends rien et je reviens. Bon aussi je suis en vacance ce soir pour 1 semaine alors pas de boulot!!
0