Se connecter avec
S'enregistrer | Connectez-vous
Résolu

Problème d'indentation dans un fichier texte / fonction récursive

Dernière réponse : dans Programmation
Partagez

Bonjour,


Voilà mon problème, j'ai écris un script VBS qui permet d'ecrire dans un fichier texte tous les répertoires et tous les fichiers d'un répertoire donné.

Mon script fonctionne, voici le code de la fonction (je ne met pas le code entier juste ma fonction) :



  1. Sub Scanner(sDossier) ' sDossier : chemin du repertoire cible
  2.  
  3. Dim file, subfolder
  4.  
  5. For Each file in sDossier.Files
  6.  
  7. tf.WriteLine(file.name) ' tf : correspond a mon fichier texte
  8.  
  9. Next
  10.  
  11. For Each subfolder in sDossier.Subfolders
  12.  
  13. tf.WriteLine(subfolder.name)
  14.  
  15. Call Scanner (subfolder) ' fonction récursive
  16.  
  17. Next
  18.  
  19. End sub


Donc par exemple pour ce répertoire :



  1. Nouveau
  2. sous dossier(1)
  3. nouv
  4. n1
  5. n2
  6. nouv(2)
  7. nouv(3)
  8. n3
  9. sous dossier(2)
  10. ndoss
  11. ndoss(2)



J'obtiens dans mon fichier texte :


  1. Nouveau
  2. sous dossier(1)
  3. nouv
  4. n1
  5. n2
  6. nouv(2)
  7. nouv(3)
  8. n3
  9. sous dossier(2)
  10. ndoss
  11. ndoss(2)


Et donc voici mon problème, je n'ai pas l'indentation, j'ai utilisé diverses solutions mais je n'y arrive pas.

J'aimerais obtenir dans mon fichier texte les données sous la forme comme cité précedemment :

  1. Nouveau
  2. sous dossier(1)
  3. nouv
  4. n1
  5. n2
  6. nouv(2)
  7. nouv(3)
  8. n3
  9. sous dossier(2)
  10. ndoss
  11. ndoss(2)



Merci d'avance pour vos réponses.

Cordialement.

Meilleure solution

Simple : il faut ajouter un argument dans ta procédure qui indique le nombre de tabulation à insérer.
Et quand tu rappelle ta fonction, tu incrémente ce nombre.

Par contre, ta procédure peut exploser la pile d'appel si jamais il y a un lien symbolique qui introduit une boucle dans le système de fichier. Mais bon, j'imagine que c'est rare sous Windows, et ça compliquerai beaucoup le code ;) .
Posez votre question