Création arborescence windows

Résolu
Bonjour à tous,

Je dois dupliquer une arborescence (dossier/sous dossier) remplie de fichier pour en faire un modèle générique. Grâce au forum (merci au passage!) j'ai pu faire un .bat qui m'a listé le contenu de mon dossier. Voici le contenu du .bat:
tree/a>Arbre.txt

J'ai donc un résultat de la forme:
+---3.0 PROJET 1
| +---3.1 CORPORATE, TAX & ACCOUNTING
| | +---3.1.1 CORPORATE
| | | +---3.1.1.2 RMT & CA
| | | \---3.1.1.4 AG
| | | +---3.1.1.4.1 2010
| | | +---3.1.1.4.2 2012
| | | +---3.1.1.4.3 2013
| | | \---3.1.1.4.4 2011
| | +---3.1.2 ACCOUNTING
| | | +---3.1.2.1 2010
| | | +---3.1.2.2 2011
| | | +---3.1.2.3 2012
| | | \---3.1.2.4 2013 Aunaudited financial statements
| | \---3.1.3 TAX

Comment faire maintenant pour créer cette arbo sous windows?

Merci d'avance pour votre aide!!!!!!!!

4 réponses

  1. Salut Barnabe0057,

    Sache que t'on mal de crâne n'aura pas été vain!!!!! Je viens de tester et cela fonctionne au poil!

    Je te remercie donc énormément!:-)
    1. De rien ;)

      A bientôt peut-être.
  2. Bonjour,

    C'est beaucoup plus compliqué que ça en a l'air, mais j'ai réussi quand même.
    En admettant que ton fichier arbre.txt se trouve dans un dossier TOTO sur ton bureau, ça donne ça :

    @echo off
    setlocal enableextensions enabledelayedexpansion
    chcp 1252 >nul

    cd /d %USERPROFILE%\Desktop\TOTO || exit /b 1

    set ref=0

    for /f "usebackq skip=3 tokens=* delims=" %%A in ("arbre.txt") do (
    set chaine=%%A
    set pos=0
    if defined chaine (call:check chaine)
    )

    pause
    exit

    :check
    set ligne=!%~1!
    set mark=!ligne:~%pos%,1!

    if "!mark!"=="+" (call:dossier "!ligne!" !pos!)
    if "!mark!"=="\" (call:dossier "!ligne!" !pos!)

    if "!mark!"=="|" (set /a pos+=4 & goto :check)
    if "A!mark!A"=="A A" (set /a pos+=4 & goto :check)

    goto :eof

    :dossier
    set "new="

    if !ref! LSS %2 (set "ref=%2" & cd !name!)
    if !ref! GTR %2 (
    cd ..
    set /a ref-=4
    goto :dossier
    )

    set "ref=%2"
    set new=%1
    set new=!new:^|=#!

    for /f "tokens=1,* delims=-" %%A in (!new!) do (
    set name=%%~B
    echo. & echo Dossier parent : %CD%
    echo Dossier à créer : !name!
    echo. & echo #########################################################################################
    if not exist "!name!" (mkdir "!name!")
    )

    goto :eof

    rem

    Ce script m'a donné un bon mal de crâne ;) ça fume encore

    1. Bonjour,

      Merci pour cette solution que j'utiliserai de façon certaine à l'avenir. Malheureusement dans le cas présent je n'ai plus accès au dossier. Il ne me reste plus que ce fichier txt...
      1. Modérateur
        Bonjour,

        Si ton but est de dupliquer un dossier (contenant ton arbo...)
        Il suffit d'utiliser XCOPY
        https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-xp/bb491035(v=technet.10)

        1. Attends par contre là tu copie de même tous les fichiers non???
        2. Ok possible de ne pas copier les fichiers avec la clés "/t"