Générer une arborescence à partir d'un .bat
Résolu/Fermé
Titibreizh35300
Messages postés
10
Date d'inscription
mardi 11 juin 2019
Statut
Membre
Dernière intervention
13 juin 2019
-
11 juin 2019 à 21:07
barnabe0057 Messages postés 14454 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 30 novembre 2024 - 14 juin 2019 à 05:53
barnabe0057 Messages postés 14454 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 30 novembre 2024 - 14 juin 2019 à 05:53
A voir également:
- Générer une arborescence à partir d'un .bat
- Creer un groupe whatsapp a partir d'un autre groupe - Guide
- Fichier bat - Guide
- Comment faire une recherche à partir d'une photo - Guide
- Comment générer un qr code - Guide
- Generer mot de passe - Télécharger - Sécurité
3 réponses
barnabe0057
Messages postés
14454
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
30 novembre 2024
4 918
Modifié le 11 juin 2019 à 22:35
Modifié le 11 juin 2019 à 22:35
Bonjour,
Voilà un exemple parmi d'autres :
Bon maintenant dodo, je serai dispo demain soir à partir de 20h00 si tu as des questions.
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.
barnabe0057
Messages postés
14454
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
30 novembre 2024
4 918
12 juin 2019 à 22:07
12 juin 2019 à 22:07
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
Titibreizh35300
Messages postés
10
Date d'inscription
mardi 11 juin 2019
Statut
Membre
Dernière intervention
13 juin 2019
13 juin 2019 à 01:32
13 juin 2019 à 01:32
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.
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.
barnabe0057
Messages postés
14454
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
30 novembre 2024
4 918
>
Titibreizh35300
Messages postés
10
Date d'inscription
mardi 11 juin 2019
Statut
Membre
Dernière intervention
13 juin 2019
13 juin 2019 à 05:47
13 juin 2019 à 05:47
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.
Titibreizh35300
Messages postés
10
Date d'inscription
mardi 11 juin 2019
Statut
Membre
Dernière intervention
13 juin 2019
13 juin 2019 à 07:17
13 juin 2019 à 07:17
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 ?
barnabe0057
Messages postés
14454
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
30 novembre 2024
4 918
>
Titibreizh35300
Messages postés
10
Date d'inscription
mardi 11 juin 2019
Statut
Membre
Dernière intervention
13 juin 2019
13 juin 2019 à 19:08
13 juin 2019 à 19:08
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)
Titibreizh35300
Messages postés
10
Date d'inscription
mardi 11 juin 2019
Statut
Membre
Dernière intervention
13 juin 2019
Modifié le 13 juin 2019 à 20:55
Modifié le 13 juin 2019 à 20:55
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
Bonne soirée
Titibreizh35300
Messages postés
10
Date d'inscription
mardi 11 juin 2019
Statut
Membre
Dernière intervention
13 juin 2019
12 juin 2019 à 06:47
12 juin 2019 à 06:47
Merci beaucoup, je vais bosser là dessus. Très sympa de ta part en tous cas.
Titibreizh35300
Messages postés
10
Date d'inscription
mardi 11 juin 2019
Statut
Membre
Dernière intervention
13 juin 2019
12 juin 2019 à 08:22
12 juin 2019 à 08:22
J'ai trouvé un truc avec DossierExpresso. Pour le moment pas mieux
barnabe0057
Messages postés
14454
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
30 novembre 2024
4 918
13 juin 2019 à 05:44
13 juin 2019 à 05:44
A titre d'information, est-ce que tu as réussi à faire quelque chose avec DossierExpresso ?
Titibreizh35300
Messages postés
10
Date d'inscription
mardi 11 juin 2019
Statut
Membre
Dernière intervention
13 juin 2019
>
barnabe0057
Messages postés
14454
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
30 novembre 2024
13 juin 2019 à 07:18
13 juin 2019 à 07:18
Pas vraiment, mais c'est sympa pour une utilisation ponctuelle
12 juin 2019 à 07:50
12 juin 2019 à 08:49
Je te tiens au courant ce soir.