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 :

Explorateur de dossiers (Permission refusée: 800A0046)


Sujet :

VBScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    bordeaux
    Inscrit en
    Avril 2017
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : bordeaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2017
    Messages : 39
    Par défaut Explorateur de dossiers (Permission refusée: 800A0046)
    Bonjour à tous,

    J'ai codé un petit script qui me permet de trier et de lister, dans un fichier texte, par extension et par poids les fichiers contenus dans des dossiers et sous dossiers (un peu comme la commande "tree" mais à ma sauce).

    Ce dernier fonctionne très bien mise à part dans certain cas ou j'obtiens l'erreur "Permission Refusée" Code "800A0046" à un moment donné pendant l’exécution du script.

    Je pense qu'il fait ça quand il à affaire à un fichier "protégé"; est il possible:

    Soit d'ignorer le ou les fichiers qui posent problème et continuer l'écriture du fichier jusqu'à la fin de l'arborescence;
    Soit d'obtenir la permission en question;

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    Set oShell = CreateObject("WScript.Shell")
    strHomeFolder = oShell.ExpandEnvironmentStrings("%USERPROFILE%")
     
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set fileWriter = fso.createTextFile(strHomeFolder &"\Desktop\liste.txt")
     
    Sub ListDirectory(objFolder)
     
    For Each objFile In  objFolder.Files
    if j<2 and objFile.size<50000000 then
    if LCase(objfso.GetExtensionName(objFile.Name)) = "jpg" Then
    fileWriter.WriteLine objFile.path
    j=j+1
    end if
    end if
    Next
     
    For Each objSubFolder In objFolder.SubFolders
    ListDirectory(objSubFolder)
    Next
     
    End Sub
     
    chemins = split("\Documents\",",")
     
    For i = 0 to ubound(chemins)
    Set objFso = CreateObject("Scripting.FileSystemObject")
    Set objMyFolder = objFso.GetFolder (strHomeFolder&chemins(i))
    ListDirectory objMyFolder
    next
    fileWriter.close
    Merci à vous

  2. #2
    Expert confirmé
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 844
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 844
    Par défaut
    Pour ignorer les erreurs et continuer dans le script, vous pouvez utiliser une instruction "On Error Resume Next" avant la boucle "For Each objFile In objFolder.Files"

    Code vbscript : 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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    Set oShell = CreateObject("WScript.Shell")
    strHomeFolder = oShell.ExpandEnvironmentStrings("%USERPROFILE%")
     
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set fileWriter = fso.createTextFile(strHomeFolder &"\Desktop\liste.txt")
     
    Sub ListDirectory(objFolder)
        On Error Resume Next
        For Each objFile In objFolder.Files
            if j<2 and objFile.size<50000000 then
                if LCase(objfso.GetExtensionName(objFile.Name)) = "jpg" Then
                    fileWriter.WriteLine objFile.path
                    j=j+1
                end if
            end if
        Next
        For Each objSubFolder In objFolder.SubFolders
            ListDirectory(objSubFolder)
        Next
    End Sub
     
    chemins = split("\Documents\",",")
     
    For i = 0 to ubound(chemins)
        Set objFso = CreateObject("Scripting.FileSystemObject")
        Set objMyFolder = objFso.GetFolder (strHomeFolder&chemins(i))
        ListDirectory objMyFolder
    Next
    fileWriter.close

  3. #3
    Membre averti
    Femme Profil pro
    bordeaux
    Inscrit en
    Avril 2017
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : bordeaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2017
    Messages : 39
    Par défaut
    Bonjour,

    Merci beaucoup ça fonctionne

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

Discussions similaires

  1. [AC-2007] Lecture/écriture sur un dossier: permission refusée
    Par Ric500 dans le forum Access
    Réponses: 1
    Dernier message: 19/06/2020, 11h35
  2. gérer Erreur : Permission refusée Code:800A0046
    Par erichissime dans le forum VBScript
    Réponses: 7
    Dernier message: 26/08/2016, 23h41
  3. Permission refusée 800A0046
    Par VinceMees dans le forum VBScript
    Réponses: 1
    Dernier message: 04/03/2016, 15h31
  4. Erreur :Permission refusée Code:800A0046
    Par younes4you dans le forum VBScript
    Réponses: 2
    Dernier message: 08/02/2013, 11h11
  5. CopyFile /permission refusé / code 800A0046
    Par sneke dans le forum VBScript
    Réponses: 5
    Dernier message: 03/07/2008, 08h25

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