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

Ruby Discussion :

Copier un dossier en gardant l'architecture


Sujet :

Ruby

  1. #1
    Membre chevronné
    Avatar de kedare
    Homme Profil pro
    Network Automation Engineer
    Inscrit en
    Juillet 2005
    Messages
    1 548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Network Automation Engineer

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 548
    Points : 1 861
    Points
    1 861
    Par défaut Copier un dossier en gardant l'architecture
    Salut , j'ai un probleme , j'ai fait un script qui va copier les fichier et les dossier en gardant l'architecture , mais je sait pas comment faire , la il me les copie tous a la racine du dossier cible , comment faire ?
    voila mon code source:

    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    require 'csv'
    require 'Functions/MD5.rb'
    require 'ftools'
    $baseDir = Dir.pwd
    $filename = ARGV[0]
    $sourceDir = ARGV[1]
     
    def analyze(i)
      if File.directory?(i)
        actual = Dir.pwd
        Dir.chdir(i)
        puts "Navigations dans #{i}"
        Dir["*"].each do |d|
          analyze(d)
        end
        Dir.chdir(actual)
      else
        puts "Analyse de #{i}"
        $data[i] = checkFile(i)
        puts "Copie de #{i}"
        File.copy(i,"#{$baseDir}/Dist/#{$filename}_data/#{i}")
      end
    end
     
     
    puts "Creation du repertoire de Distibution ,et ecriture du descripteur ..."
    Dir.mkdir("Dist")
    Dir.chdir("Dist")
    Dir.mkdir("#{$filename}_data")
     
    Dir.chdir($baseDir)
    Dir.chdir($sourceDir) do
      sourceData = Dir["*"]
      $data = {}
      sourceData.each do |d|
        analyze(d)
      end
    end
     
    Dir.chdir("#{$baseDir}/Dist")
    CSV.open($filename, 'w') do |writer|
      $data.each do |f|
      writer << [f[0] , f[1]]
      end
    end
     
    puts "l'operation est terminé , vous devez maintenant publier le dossier Dist/"
    que faire ? :p
    merci

  2. #2
    Membre habitué

    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2004
    Messages : 118
    Points : 137
    Points
    137
    Par défaut
    Tu peux toujours augmenter la taille du stack, mais dans ton cas cela ne résoudra rien car tu as un problème d'algorithme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    def analyze(i)
      if File.directory?(i)
        analyze(i)
    Quel que soit l'appel à "analyse", "i" sera toujours un dossier. Cela s'appelle de la récursion infinie!
    J'imagine que tu veux plutôt quelquechose comme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    def analyze(i)
      if File.directory?(i)
        i.each_child do |c|
          analyze(c)
        end
    "each_child" restant à implémenter.

  3. #3
    Membre chevronné
    Avatar de kedare
    Homme Profil pro
    Network Automation Engineer
    Inscrit en
    Juillet 2005
    Messages
    1 548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Network Automation Engineer

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 548
    Points : 1 861
    Points
    1 861
    Par défaut
    c'est bon pour ce probleme j'ai reussit ^^ (en remettant une boucle dedans en faite)
    mais j'ai un autre probleme , j'ai editer le sujet principal :p (en meme temp que tu a ecrit ta reponse lol ^^)

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

Discussions similaires

  1. copier un dossier en c++
    Par warubi dans le forum C++
    Réponses: 2
    Dernier message: 03/02/2007, 17h10
  2. [VBA-E]:copier des cellules en gardant les fomules
    Par VBBBA dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 17/06/2006, 10h53
  3. [VB6] Copier un dossier en fonction d'un autre
    Par Sytchev3 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 10/04/2006, 16h39
  4. [VB6] comment copier un dossier ??
    Par Ekimasu dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 29/06/2005, 15h03
  5. Comment copier un dossier et ses sous dossiers ?
    Par touhami dans le forum Langage
    Réponses: 5
    Dernier message: 30/12/2004, 16h10

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