Générer une arborescence à partir d'un .bat [Résolu]

A voir également:Générer une arborescence à partir d'un .batGénérer un powerpoint à partir d'excel vba - Forum - VB / VBA Generateur de pseudo a partir d'un prenom ✓ - Forum - Jeux en ligne Créer une arborescence à partir d un fichier excel ✓ - Forum - Bureautique Pseudo avec le prenom Alex - Forum - Jeux en ligne Générer un word à partir d'excel - Forum - Excel

Bonjour,

Je cherche à générer une arborescence rentrée via free plane, soit via Calc de LO, soit via un batch.
Côté Calc, je cale sur les boucles imbriquées, pour le batch, ce serait à partir d'un fichier texte de la forme :
1 CEREM;07
1.1 Comm;05
1.1.2 Carton_Invit;02
1.1.1 Carte_Voeux;11
1.1.3 Discours;04
1.1.4 Serv;04
1.2 ESPAUM;02
1.2.1 Org;17
1.3 Even;20
1.3.1 N_Proj;06
1.3.2 N_Proj2;06
1.3.3 N_Proj3;20
1.4 Medaille;17
1.4.1 Comm;05
1.4.2 Dev;15
1.4.3 RH;05
1.4.4 Serv;17
1.5 Voeux;09
1.5.1 BDD;10
1.5.2 Dev;10
1.5.3 Etq;18
Tout ce qui est derrière le ";" devant disparaitre. Là je cale aussi.
Merci de votre aide

Forum

A voir également:Générer une arborescence à partir d'un .batGénérer un powerpoint à partir d'excel vba - Forum - VB / VBA Generateur de pseudo a partir d'un prenom ✓ - Forum - Jeux en ligne Créer une arborescence à partir d un fichier excel ✓ - Forum - Bureautique Pseudo avec le prenom Alex - Forum - Jeux en ligne Générer un word à partir d'excel - Forum - Excel

Web: www.shapebootstrap.net

3 réponses

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Bonjour,

Voilà un exemple parmi d'autres :

@echo off
setlocal enableextensions enabledelayedexpansion
chcp 1252 >nul

cd /d ***chemin de ton dossier contenant le fichier texte*** || exit /b 1

for /f "tokens=1,2,* delims=; " %%A in (fichier.txt) do (
echo %%A | find "." >nul && call :fonction "%%~A" "%%~B" || if not exist "%%~A %%~B" (mkdir "%%~A %%~B" & echo ### Création du dossier ==^>^> %%~A %%~B)
)

echo. & pause
exit /b 0

:fonction

set index=%~1
set parent=!index:~,-2!

set resultat=0

for /f "delims=" %%E in ('2^>nul dir /s /b /ad ^| findstr /c:"!parent! "') do (

set /a resultat+=1
if !resultat! EQU 1 (
pushd "%%~dpnxE"
if not exist "%~1 %~2" (mkdir "%~1 %~2" & echo ### Création du dossier ==^>^> %~1 %~2)
popd
)

)

goto :eof

Bon maintenant dodo, je serai dispo demain soir à partir de 20h00 si tu as des questions.


“L'intelligence artificielle se définit comme le contraire de la bêtise naturelle.”

Dire « Merci » 1

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CommentCaMarche

CCM 41916 internautes nous ont dit merci ce mois-ci

Reply
réponses:
  • auteur

    Vraiment top. Merci. Pour être top je voudrai enlever les 1, 1.1, 1.1.2, etc... Si je ne trouve pas et que tu as une idée. Merci encore. Si j'ai le temps au taf, je m'y colle.

  • auteur

    Il faudra rajouter une étape à la fin du script, plutôt simple à faire.

    Je te tiens au courant ce soir.

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Voilà une version avec les numéros supprimés :

@echo off
setlocal enableextensions enabledelayedexpansion
chcp 1252 >nul

cd /d ***chemin de ton dossier contenant le fichier texte*** || exit /b 1

for /f "tokens=1,2,* delims=; " %%A in (fichier.txt) do (
echo %%A | find "." >nul && call :creer "%%~A" "%%~B" || if not exist "%%~A %%~B" (mkdir "%%~A %%~B" & echo ### Création du dossier ==^>^> %%~A %%~B)
)

for /f "delims=" %%A in ('2^>nul dir /b /s /ad ^| sort /r') do (
echo %%~nxA | findstr /r "^[0-9]" >nul && (pushd "%%~dpA" & call :renommer "%%~nxA")
popd
)

echo. & pause
exit /b 0


:creer

set index=%~1
set parent=!index:~,-2!

set resultat=0

for /f "delims=" %%E in ('2^>nul dir /s /b /ad ^| findstr /c:"!parent! "') do (
set /a resultat+=1
if !resultat! EQU 1 (if not exist "%%~fE\%~1 %~2" (mkdir "%%~fE\%~1 %~2" & echo ### Création du dossier ==^>^> %~1 %~2))
)

goto :eof


:renommer

for /f "tokens=1,* delims= " %%H in ("%~1") do move "%~1" "%%~I" >nul

goto :eof

Dire « Merci » 1

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CommentCaMarche

CCM 41916 internautes nous ont dit merci ce mois-ci

Reply
réponses:
  • auteur

  • auteur

    Bonsoir,

    C'est réellement sympa de ta part. Je m"embringue dans des trucs beaucoup plus alambiqués et moins efficaces. A moi de progresser donc. Grand merci.

  • auteur

    Ce n'est pas facile pour un débutant, même moi j'ai un peu galéré, je suis tombé sur un problème imprévu, j'ai mis environ 2h30 pour trouver la totalité du script.

  • auteur

    Oui, ça n'est pas simple. J'avais commencé il y a longtemps. Je suis parti de ces acquis, mais insuffisants même après de nombreuses recherches. Je passe du temps à comprendre et apprendre de ce que tu proposes. Quel était le problème ?

  • auteur

    Le problème c'était hier soir pour virer les numéros devant, je pensais que ça serait hyper simple mais non, à chaque fois le script me répondait que le chemin n'était pas bon, normal car ma boucle renommait à la volée les dossiers "parents" avant les dossiers "enfants" du coup le chemin des dossiers "enfants" était modifié et faisait planter la commande REN, mais j'ai réussi à contourner le problème en inversant l'ordre de traitement avec la commande SORT, et grâce aussi aux chemins relatifs (merci à la commande PUSHD)

  • auteur

    OK, j'avais mis un gros point d'interrogation sur le popd et le pushd... J'ai cherché ce à quoi ça pouvait servir et bon, des éclaircissements, mais encore à apprendre. Mon objectif n'est pas de "pomper" mais de faire en comprenant.... Certes, ça prend du temps, mais je te remercie de passer un peu de ton temps pour expliquer. C'est très enrichissant. Il se peut que je revienne pour d'autres éclaircissements, je pioche pas mal dans "https://initscreen.developpez.com/tutoriels/batch/apprendre-la-programmation-de-script-batch/"... mais pas toujours simple.
    Bonne soirée

  • auteur

    Et justement.... Question il y a ^^ : si dans mon exemple je m'arrêtais à la subdivision 1.5.3, (et j'avais fait des tests pour aller plus en profondeurs, qu'en est-il pour une fin de subdivision qui, suite à un changement de version, devient, par exemple au pire 1.1.37.4.2. Je pensais bosser sur su pérenne, là ça devient n'importe quoi. Je laisse tout pour aujourd'hui, je vois au taf demain si le pb c'est moi, mon PC, la fatigue. Surtout pas s'énerver lol. Ciao

  • auteur

    Tu peux aller plus en profondeur dans les versions, mais en l'état actuel il y a une limitation : tu ne peux utiliser que des chiffres, pas de nombre, donc avec 1.1.37.4.2 le script risque de perdre les pédales.

    Un bon script ça se travaille avec le temps, actuellement ce n'est qu'une ébauche, au mieux une bonne base de travail.

    Bonne nuit.

  • auteur

    Oui, tout à fait. La base est là. Le problème est la fiabilité des imports-exports et leur pérennité . Je veux bien bosser, mais sur un environnement stable, pas si ça change tous les jours. C'est pourquoi je lève le pied ce soir et je verrai demain. Au pire ce sont les paramètres d'export qu'il faut redéfinir puisque j'avais l'assurance qu'en profondeur on ne dépassait pas 3. Et là j'ai obtenu des aberrations telles que 2 fois 1.1.1. C'est en amont que je dois chercher. Mais disons que... ça gave :)
    A+ du positif j'espère

  • auteur

    Merci @+

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Merci beaucoup, je vais bosser là dessus. Très sympa de ta part en tous cas.

Reply
réponses:
  • auteur

    J'ai trouvé un truc avec DossierExpresso. Pour le moment pas mieux

  • auteur

    A titre d'information, est-ce que tu as réussi à faire quelque chose avec DossierExpresso ?

  • auteur

    Pas vraiment, mais c'est sympa pour une utilisation ponctuelle

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed