cs_tomyboy
Messages postés21Date d'inscriptionmardi 23 octobre 2007StatutMembreDernière intervention13 novembre 2007
-
30 oct. 2007 à 10:48
cs_JMO -
13 nov. 2007 à 21:53
Salut à vous,
Je supra débute en vbs et je dois faire un script qui permet de checker l'ensemble des disque dur d'une machine pour recuperer un fichier, tout en étant fonctionnel sur n'importe quel type de machine ( os différent, serveur/pc...) il me semble qu'il faut mettre une variable d'environnement , mais je ne sais pas trop, merci de votre aide
cs_tomyboy
Messages postés21Date d'inscriptionmardi 23 octobre 2007StatutMembreDernière intervention13 novembre 2007 30 oct. 2007 à 18:14
j'ai bien compris que je mettais les periphériques que je voulais, mais si je l'execute d'un endroit ou ce que j'ai indiqué n'existe pas, genre le disque d ou autre...
j'insiste sur le fait d'avoir un truc dynamique ki permette de ne rien mettre en dur...
en plus j'ai une erreur
un composant activex ne peut pas créer un objet.:'UserAccounts.CommonDialog' ...
tu sais ou je peux regarder si mon script que bultez a poster kelke part pour voir si il a interessé des gens ?
Hitch16
Messages postés78Date d'inscriptionvendredi 4 février 2005StatutMembreDernière intervention 6 octobre 2008 30 oct. 2007 à 18:26
il n'y a pas d'ActiveX là dedans...
je crois que tu n'as pas bien compris le principe du common dialog...
tu as une boite de dialogue qui s'ouvre te permettant d'aller chercher le fichier désiré, le c: te donne juste le dossier d'ouverture par défaut (c: existe toujours), après tu parcours ton disque comme avec l'explorateur pour aller chercher topn fichier.
Je ne vois donc pas où est le problème, surtout que dans ton script c'est l'utilisateur qui choisi le fichier à modifier....
cs_tomyboy
Messages postés21Date d'inscriptionmardi 23 octobre 2007StatutMembreDernière intervention13 novembre 2007 30 oct. 2007 à 18:32
si tu le dis mais le message d'erreur pour activex est bien réel...
puis j'ai deja mis un common dialog qui ne me permettait ke de voir les sous dossier de c: , pas le dossier parent ou frere ;-)
bref je n'arrive pas a faire fonctionner ce que tu m'a donné pb d'activeX
Hitch16
Messages postés78Date d'inscriptionvendredi 4 février 2005StatutMembreDernière intervention 6 octobre 2008 31 oct. 2007 à 09:59
De plus il faudrait que tu m'expliques ce qu'est le dossier parent de c: ...
En tous cas avec un common dialiog bien fait tu peux te déplacer dans tous les dossiers sur tous les lecteurs y compris sur le réseau et sans ActiveX.
Ci-dessous "ton" code que tu m'as envoyé en MP, cela permettra sans doute à d'autres de proposer des solutions où en tous cas de mieux cerner ton problème...
-----------------------------------------------------------------------------------------------------------------------------
dim Lotissement , Din , Rimdeb , Rimlong , Fimdeb , Fimlong , affich , affsit
Set fso = CreateObject("Scripting.FileSystemObject")
Set WshShell = WScript.CreateObject("WScript.Shell")
strDesktop = WshShell.SpecialFolders("Desktop")
fc2 = "archives.all"
input = "999"
'''''''''''''''''''''''''''''''''''''''''''''''''''''
' fonction de recherche d1 repertoire fc2 '
'''''''''''''''''''''''''''''''''''''''''''''''''''''
Function trouvfc2(folderspec)
Dim f , f1 , fc
'f fonction , f1 sous-directory , fc = directory ,
' affich = fichier , fc1 incremente folderspec
Set f = fso.GetFolder(folderspec)
do Until affich = fc2
Set fc = f.Files
For Each f1 in fc
affich = f1.name
if affich = fc2 then Exit do End If
if affich <> fc2 then
if fc2 = "archives.all" then
fc2 = "archives.ret"
MsgBox ( " on essaie : " & fc2 )
trouvfc2(fc1)
End If
End If
Next
set fc = f.SubFolders
For Each f1 in fc
if affich = fc2 then Exit do End If
fc1 = fc1 & "" & f1.name
trouvfc2(fc1)
Next
if affich <> fc2 then
MsgBox ( " on ne trouve pas : " & fc2 )
Exit Function
End If
Loop
End Function
'''''''''''''''''''''''''''''''''''''''''''''''''''''
' fonction de recherche du repertoire suivant fc2 '
'''''''''''''''''''''''''''''''''''''''''''''''''''''
Function trouvfcs(folderspec , ntime)
Dim f , fc , cpt
Set f = fso.GetFolder(folderspec)
cpt = 1
set fc = f.SubFolders
For Each f1 in fc
fc1 = f1.Name
cpt = cpt + 1
If Cpt = ntime Then Exit For End If
Next
End Function
'''''''''''''''''''''''''''''''''''''''''''''''''''''
' on cherche le lecteur de CD '
'''''''''''''''''''''''''''''''''''''''''''''''''''''
fc1 = "Z:"
trouvfc2(fc1)
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' on ouvre le fichier archives pour afficher un sit '
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Function afsit
dim farch , buf , compar
Const ForReading = 1
affich = fc1 & "" & fc2
Set farch = fso.OpenTextFile(affich , ForReading)
cptr = 0
Do Until farch.AtEndOfStream or Input = afsit
afsit = mid ( buf , 71 , 24)
buf = farch.Read(130)
If mid ( buf , 71 , 24) <> "000000000000000000000000" and mid ( buf , 71 , 24) <> " " then
cptr = cptr + 1
if cptr = 1 then
affich = mid ( buf , 71 , 24)
End If
End If
Loop
affsit = afsit
afsit = "choisissez le sit désiré , par exemple " & affich
farch.close
End Function
Input = inputbox (afsit , " par defaud je prends le sit affiché " ) If Input "" then Input affich End If
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'recherche dans les fichiers archives suivants du sit demandé '
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Cpter = 2
Do until Input = affsit
if Cpter > 20 then
MsgBox ( " on ne trouve pas dans 20 directory , le dernier sit est : " & affsit )
Exit Do
End If
fc1 = "Z:"
trouvfcs fc1 , Cpter
fc1 = "Z:" & "" & fc1
trouvfc2(fc1)
' MsgBox ( " fc1 : " & fc1 )
afsit
Cpter = Cpter + 1
Loop
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'recherche dans archives du sit demandé '
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Function sit
dim farch , buf , compar
Const ForReading = 1
affich = fc1 & "" & fc2
Set farch = fso.OpenTextFile(affich , ForReading)
Do Until farch.AtEndOfStream
buf = farch.Read(130)
compar = mid ( buf , 71 , 24)
Lotissement = mid ( buf , 111 , 8)
Din = mid ( buf , 119 , 4)
If compar = Input Then Exit Do End If
Loop
sit = compar
if farch.AtEndOfStream Then
sit = Input
Lotissement = fc1
Din = avant
End If
farch.close
End Function
MsgBox ( " sit demandé : " & sit & chr(10) & " lotissement obtenu : " & Lotissement & chr(10) & " din : " & Din )
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'si sit ok on recherche dans index le dernier din (ascii ==> décimal ) identique'
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' modification du fichier tif recto qui doit être présent sur le bureau '
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Function Cretif
dim fim , buf
Const ForReading = 1
fc2 = Lotissement & ".fim"
trouvfc2(fc1)
affich = fc1 & "" & fc2
Set fim = fso.OpenTextFile(affich , ForReading)
buf = fim.Read(Fimdeb)
buf = fim.Read(Fimlong)
fim.close
Const ForWriting = 2
Set fso = CreateObject("Scripting.FileSystemObject")
Cretif = strDesktop & "\Recto.tif"
Set fim = fso.OpenTextFile(Cretif , ForWriting)
fim.Write (buf)
fim.close
End Function
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' modification du fichier tif verso sur qui doit être présent le bureau '
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Function Crevers
dim rim , buf
Const ForReading = 1
fc2 = Lotissement & ".rim"
trouvfc2(fc1)
affich = fc1 & "" & fc2
' MsgBox ( " on trouve : " & affich )
Set rim = fso.OpenTextFile(affich , ForReading)
buf = rim.Read(Rimdeb)
buf = rim.Read(Rimlong)
rim.close
Const ForWriting = 2
Set fso = CreateObject("Scripting.FileSystemObject")
Crevers = strDesktop & "\Verso.tif"
Set rim = fso.OpenTextFile(Crevers , ForWriting)
rim.Write (buf)
rim.close
End Function
Pos
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' affichage des images avec le logiciel kodak '
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
le lecteur cd est en dur, mon "chef" me demande de le rendre dynamique a savoir que l'utilisateur du script pourra prendre les fichier n'importe ou... j'avais mis ca comme fonction
chemin = select_a_folder("Veuiller sélectionner un dossier","Poste de travail")
' chemin = select_a_folder("Veuiller sélectionner un dossier","" )
' le "" permet d'avoir l'arborescence complète
wscript.echo "Le Dossier choisi est : " & chemin
'===================================================
' la fonction suivante permet de choisir un dossier
' Elle retourne "ANNUL" si appuie sur le bouton annuler
' paramètres : message à afficher, directory : dossier ...
Function select_a_folder(message,directory)
Const WINDOW_HANDLE = 0
Const NO_OPTIONS = 0
Set objShell = CreateObject("Shell.Application" )
Set objFolder = objShell.BrowseForFolder _
(WINDOW_HANDLE, message , NO_OPTIONS, directory)
On Error Resume Next
Set objFolderItem = objFolder.Self
If Err <> 0 Then
select_a_folder = "ANNUL"
Else
select_a_folder = objFolderItem.Path
end if
On Error GoTo 0
End Function
*******
qui me permettait de checker tout le diske mon mon chef n'a pas aimé le chemin "poste de travail" car il peu changer en fonction des os...
vois tu un peu plus ce dont je parle ?
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 31 oct. 2007 à 10:09
sauf que :
Set fso = CreateObject("Scripting.FileSystemObject")
Set WshShell = WScript.CreateObject("WScript.Shell")
Set objShell = CreateObject("Shell.Application" )
Set objFolder = objShell.BrowseForFolder...
sont bien des ActiveX !
et que si c'est dans une page web ( .htm à la place de .hta ou .vbs ),
il va falloir les autoriser dans Internet Explorer.
cs_tomyboy
Messages postés21Date d'inscriptionmardi 23 octobre 2007StatutMembreDernière intervention13 novembre 2007 31 oct. 2007 à 10:12
lol j'entends par dossier parent, poste de travail qui me permettrait d'avoir l'ensemble des diske et autre réseaux mais bon si la common dialog permet de tout checker meme en mettant le c: je vais tester
mais j'ai bien envie de t'envoyer le message d'erreur pour active x losque je lance ce common dialog...
cs_tomyboy
Messages postés21Date d'inscriptionmardi 23 octobre 2007StatutMembreDernière intervention13 novembre 2007 31 oct. 2007 à 11:15
lol ne t'impatientes pas je te remercie de ton aide, mais j'ai ce message d'erreur que j'ai du mal a te faire admettre .. et je cherche depuis hier pk j'ai ce message d'erreur, donc je ne pense pas ne pas y mettre du mien c'est juste que c'est pas mon univers...