IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBScript Discussion :

mettre plusieurs fichiers du même type en lecture seule


Sujet :

VBScript

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2006
    Messages : 57
    Points : 34
    Points
    34
    Par défaut mettre plusieurs fichiers du même type en lecture seule
    Hello,

    Voila j'ai tapé un code qui devrait me permettre de mettre plusieurs fichiers du même type ( .xls ) en lecture seule, mais voila ca bug.

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Destination_Path = Variable qui donne un chemin
    Folder_Name = Variable donnant le nom du dossier dans le quel aller
     
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objFile = objFSO.GetFile(Destination_Path & Folder_Name & "\*.xls")
    If objFile.Attributes = objFile.Attributes AND 1 Then
        objFile.Attributes = objFile.Attributes XOR 1
    End If
    ps : les variables sont justes et il me dit qu'il trouve pas le chemin à la ligne N°5 ici

    Si quelqu'un à une autre méthode pour mettre des fichiers en lecture seul se serait gentil, car je sents que c'est pas la bonne la

    Chicho !

  2. #2
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    A mon avis GetFile récupère un seul fichier, et ne peut pas récupérer plusieurs fichier.
    Regarde ici, à "Enumerating All the Files in a Folder" :
    http://www.activexperts.com/activmon...esInFolder.htm
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2006
    Messages : 57
    Points : 34
    Points
    34
    Par défaut
    merci de cette réponse, mais je n'ai pas réussi
    J'sais vraiment pas comment faire pour mettre tous les fichiers .xls d'un dossier en lecture seule... J'suis sur qu'il doit y avoir une méthode assez simple, c'est pas possible !

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2006
    Messages : 57
    Points : 34
    Points
    34
    Par défaut
    si personne m'aide, je pense que le suicide va approcher... Je tourne en rond en faisant des boucle "WHILE" avec des "DIR" dedans, je comprends plus rien de ce que je fais LOL !

    En tout cas il doit y'avoir une technoche en faisant une boucle... Genre tant que fichier xls est pas en lecture seul tourner

    sivouplé help me ^^

  5. #5
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Citation Envoyé par chicho
    Je tourne en rond en faisant des boucle "WHILE" avec des "DIR" dedans
    Si, au lieu de te lamenter, tu nous montrais tes essais en nous disant ce que tu obtiens, on pourrait, peut-être, t'aider.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2006
    Messages : 57
    Points : 34
    Points
    34
    Par défaut
    je ne me lamente pas, et j'ai déjà mis mon code au début.
    J'ai essayé un peu avec la technique qu'on m'a linké la mais j'y arrive pas. J'obtient plus d'erreur qu'autre chose.

    Et j'ai tellement changé de technique que au final je n'ai rien de concret donc c'est pour cela que je ne poste pas mon code ( logique j'imagine ). Si je sentais que j'étais proche de la réponse, j'aurais mis mon code, mais ce n'est malheureusement pas le cas.

    Merci quand même d'avoir essayé de m'aider ( ou pas )

  7. #7
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut
    bonjour

    voici un exemple en VBA Excel à adapter en VBS
    la procedure boucle sur tous les classeurs Excel d'un repertoire pour les passer en lecture seule (les classeurs sont supposés fermés)


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    'Nécessite d'activer la référence Microsoft Scriping Runtime
    Dim Fichier As String, Chemin As String
    Dim objFSO As FileSystemObject
    Dim objFile As File
     
    Chemin = "C:\Documents and Settings\michel\dossier\excel"
    Fichier = Dir(Chemin & "\*.xls") 'adaptez le chemin
     
    Set objFSO = CreateObject("Scripting.FileSystemObject")
     
    Do While Len(Fichier) > 0
     
        Set objFile = objFSO.GetFile(Chemin & "\" & Fichier)
        objFile.Attributes = objFile.Attributes + ReadOnly
     
        Fichier = Dir()
    Loop


    michel

  8. #8
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    bon et si les boucles te font tourner en rond tu peu bien utiliser la bonne vielle commande dos Attrib
    Citation Envoyé par Ligne de commande Dos
    attrib +r c:\tmp\*.xls
    commande que tu peu lancer en VBS par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Set WshShell = WScript.CreateObject("WScript.Shell")
    WshShell.Run "attrib +r c:\tmp\*.xls"

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2006
    Messages : 57
    Points : 34
    Points
    34
    Par défaut
    Merci au 2, je vais essayer de faire mon possible avec tout cela. La commande DOS elle fonctionne quand je la tape dans la console mais pas depuis le VBS :p Mais c'est super, je vais voir les 2 solutions que vous m'avez donné.

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2006
    Messages : 57
    Points : 34
    Points
    34
    Par défaut
    Si quelqu'un connait le moyen de modifier le "DIR" pour qu'il soit fonctionnel avec VBS, car j'ai cru comprendre que le DIR n'existe pas sous vbS

    Je suis finalement partie sur l'idée de skillyroad, mais la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Fichier = Dir(Chemin & "\*.xls") 'adaptez le chemin
    Elle ne passe pas

    si j'enleve le DIR carrement j'ai un bug à la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set objFile = objFSO.GetFile(Fichier)
    Il dit fichier introuvable, ET HOP et c'est reparti comme toutes les autre combine que j'ai essayé


    voici tout le code ( sans le DIR ) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Chemin = "E:\VB_TAF\POINT MORT\test"
    Fichier = Chemin & "\*.xls" 'adaptez le chemin
     
    Set objFSO = CreateObject("Scripting.FileSystemObject")
     
    Do While Len(Fichier) > 0
     
        Set objFile = objFSO.GetFile(Fichier)
        objFile.Attributes = objFile.Attributes + ReadOnly
     
        Fichier = Dir()
    Loop

  11. #11
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Encore une fois, je pense vraiment que GetFile ne peut récupérer qu'un seul fichier et non plusieurs. Pour récupérer plusieurs fichiers dans un répertoire, regarde ici :
    http://www.activexperts.com/activmon...esInFolder.htm
    Note que je t'ai déja donné ce lien précédement et qu'avec cette méthode tu obtiens une collection d'objet file et que donc tu peut traiter, grâce à une boucle, chacun d'entre eux !!!!
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2006
    Messages : 57
    Points : 34
    Points
    34
    Par défaut
    Merci Cedric, mais comme je l'ai écris, j'ai essayé avec ton code et je n'ai pas réussi !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

    Mais plus sérieusement voici ou j'en étais avec ton code Cedric, mais j'ai abondonné :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    prout = "E:\VB_TAF\POIN MORT\test\"
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colFiles = objWMIService.ExecQuery _
    ("Select prout from CIM_DataFile where Extension = 'xls' ")
    For Each objFile in colFiles
    Wscript.Echo objFile.Name
    Next
    Et je me retrouve avec une erreur au "For Each" il me dit truc (null)
    Sérieux j'ai laché l'affaire, car voila je suis pas un leet dans ce language et quand ca devient du charabia que je ne comprends pas, ca vaut presque pas la peine :\


    ps :

    pour le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set WshShell = WScript.CreateObject("WScript.Shell")
    WshShell.Run "attrib +r c:\tmp\*.xls"
    Sérieux celui-la doit marcher, mais c'est juste que en passant par VBS il tape dans DOS : "attrib +r c:\tmp\*.xls" alors que pour que ca marche faut faire attrib +r "c:\tmp\*.xls" et pas moyen de déplacer ces foutu guillemet sans avoir un bug :p

  13. #13
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    J'ai eu ce genre de problème, je suis un débutant (pas plus de 4 mois de vbs derrière moi), et pourtant je n'ai pas laché l'affaire, j'ai résolu mes erreurs et aujourd'hui je suis content de l'avoir fait, car comprendre comment marche les objets WMI et les utiliser me simplifient la vie.
    Essaye ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Set colFiles = objWMIService.ExecQuery _
    ("Select * from CIM_DataFile where Path = '" & prout & "' And Extension = 'xls' ")
    Cela devrait mieux marcher.
    Juste une question, as tu déja fait du SQL (c'est ce qui est exécuté dans la commande ExecQuery) ?
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  14. #14
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2006
    Messages : 57
    Points : 34
    Points
    34
    Par défaut
    J'ai fais juste 3 semaines de SQL et y'a très longtemps, c'était à l'école.. Je vois que le SELECT tout ca c'est comme le SQL mais je ne peux pas trop me debrouiller la dedans vu que je connais pas.

    Je viens te taper ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    prout = "E:\VB_TAF\POIN MORT\test\"
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colFiles = objWMIService.ExecQuery _
    ("Select * from CIM_DataFile where Path = '" & prout & "' And Extension = 'xls' ")
    For Each objFile in colFiles
    Wscript.Echo objFile.Name
    Next
    Toujours le même problème de ( null ) à la ligne du For Each, ca doit surement venir de objFile qui apparaît nul part ailleurs... Merci de ton aide en tout cas !

  15. #15
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    Citation Envoyé par chicho
    .......
    pour le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Set WshShell = WScript.CreateObject("WScript.Shell")
    WshShell.Run "attrib +r c:\tmp\*.xls"
    Sérieux celui-la doit marcher, mais c'est juste que en passant par VBS il tape dans DOS : "attrib +r c:\tmp\*.xls" alors que pour que ca marche faut faire attrib +r "c:\tmp\*.xls" et pas moyen de déplacer ces foutu guillemet sans avoir un bug :p
    tu as des espaces dans le nom du répertoire ...?
    tiens pour mettre les " autour du nom de fichier..:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Set WshShell = WScript.CreateObject("WScript.Shell")
    WshShell.Run "attrib +r ""c:\tmp\*.xls"""

  16. #16
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Non si la collection que te retournes execquery est vide, c'est que la commande SQL est mauvaise, j'essayerais quand j'aurai du temps ton bout de code et je te dirais ce qui ne va pas.
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  17. #17
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Essaye comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    prout = "\\VB_TAF\POIN MORT\test\\"
    Toutes les informations sur l'objet CIM_DataFile ici :
    http://msdn.microsoft.com/library/de...m_datafile.asp
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  18. #18
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2006
    Messages : 57
    Points : 34
    Points
    34
    Par défaut
    merci beaucoup, avec toutes vos aides j'ai enfin réussi.
    Je vais travailler sur WMI quand j'aurais du temps, ca a l'air interessant comme système !

  19. #19
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    oui tu verras cela te simplifiera la vie pour tout ce qui est le management de windows.
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. ouvrir plusieurs fichiers en même temps
    Par diiity dans le forum Windows
    Réponses: 0
    Dernier message: 03/08/2007, 18h26
  2. Mettre plusieurs drivers en même temps pour un programme
    Par nicofromChina dans le forum JDBC
    Réponses: 14
    Dernier message: 25/01/2007, 11h17
  3. Réponses: 6
    Dernier message: 23/11/2006, 16h19
  4. mettre plusieurs fichiers dans un meme corps de mail
    Par Iria77 dans le forum Réseau/Web
    Réponses: 3
    Dernier message: 11/10/2006, 21h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo