.BAT > Récupérer chemin d'un dossier [Résolu]

Signaler
Messages postés
131
Date d'inscription
lundi 13 avril 2009
Statut
Membre
Dernière intervention
12 avril 2020
-
Messages postés
131
Date d'inscription
lundi 13 avril 2009
Statut
Membre
Dernière intervention
12 avril 2020
-
Bonjour,

Dans un chemin où il y a un dossier qui porte un nom non connu, je cherche à récupérer le chemin complet afin de l'utiliser dans une commande de copy (par exemple).

J'avais essayé (entre autre) : dir "C:\Dossier1\NomDossierInconnu" /b /a-d /s
Le dossier est vide, donc pas de commande de recherche pour récupérer le chemin.

Comment avancer dans les dossiers après le "C:\Dossier1\" ? J'ai également essayer "/.." mais sans succès.

Merci pour l'aide...

1 réponse

Messages postés
12671
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
9 août 2020
3 441
Bonjour,

Essaie ça :
dir C:\Dossier1 /b /ad /s

Messages postés
131
Date d'inscription
lundi 13 avril 2009
Statut
Membre
Dernière intervention
12 avril 2020

Dans le cas où il y aurait plusieurs dossiers après le dossier 1, comment puis-je isoler celui qui m'interesse (par exemple par ordre de l'arborescence) ?

> Je voulais dire, si dans "C:\Dossier1" il y a le sous-dossier "NomDossierInconnu", "AutreA", "AutreB"... comment ne récupérer que le chemin complet de "NomDossierInconnu" ?

Cette commande marche parfaitement dans le cas où il n'y a qu'un dossier après "Dossier1" :
dir C:\Dossier1 /b /ad /s

Mais s'il y a plusieurs dossiers, tous les sous-dossiers de "Dossier1" sont listés, alors que je souhaite récupérer le chemin de "NomDossierInconnu" uniquement.

Merci
Messages postés
12671
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
9 août 2020
3 441 >
Messages postés
131
Date d'inscription
lundi 13 avril 2009
Statut
Membre
Dernière intervention
12 avril 2020

Par exemple, pour isoler le premier de l'arborescence :

@echo off

for /f "delims=" %%A in ('dir /b /ad "C:\Dossier1" ^| sort /r') do set dossier=%%~fA

echo %dossier%

pause
Messages postés
131
Date d'inscription
lundi 13 avril 2009
Statut
Membre
Dernière intervention
12 avril 2020

Ok, ça marche, mais pour désigner le deuxième dossier ou le troisième, je dois agir où dans le code pour le choisir ?
Messages postés
12671
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
9 août 2020
3 441 >
Messages postés
131
Date d'inscription
lundi 13 avril 2009
Statut
Membre
Dernière intervention
12 avril 2020

Pour désigner le deuxième ou le troisième il faut utiliser une autre technique :

@echo off
setlocal enabledelayedexpansion

set index=0

for /f "delims=" %%A in ('2^>nul dir /b /ad') do (

set /a index+=1
if !index! EQU 3 (set dossier=%%~fA)

)

echo %dossier%

pause


Avec cet exemple tu obtiens le troisième dossier, tu peux remplacer le 3 par la position que tu souhaites cibler.
Messages postés
131
Date d'inscription
lundi 13 avril 2009
Statut
Membre
Dernière intervention
12 avril 2020

Bonjour Barnabe0057,

Bon, cette fois-ci tout fonctionne à merveille ! Merci pour tes lumières...et ta patience !

Poste résolu !