Retrouver le chemin de répertoire en batch

Résolu
Bonjour,

je souhaite stocker le chemin complet d'un dossier dans une variable.

J'y arrive pour stocker le chemin d'un fichier avec ce script:


for /f "delims=" %%a in ('dir mon_fichier.txt /b/s') do set "path=%%~dpnxa"
echo Le chemin est : %path%


Il me faudrait la même chose mais cette fois-ci pour un répertoire, est-ce possible s'il vous plait ?

3 réponses

Résumé de la discussion

Stocker le chemin complet d'un dossier dans une variable Windows requiert une approche similaire à celle utilisée pour les fichiers, en utilisant for /f et dir /b /s pour capturer le chemin. Plusieurs solutions sont discutées, notamment l’usage de findstr pour filtrer les résultats, l’emploi de for /f avec des expressions régulières et la gestion des escapes dans les variables. Certaines réponses proposent d’adapter le script pour les répertoires plutôt que les fichiers, notamment en utilisant des motifs correspondant à des répertoires et en évitant d’écraser les variables d’environnement. En pratique, des échanges soulignent l’importance de la gestion des noms de variables et des chemins retournés, ainsi que des précautions liées à l’échappement des caractères et à portabilité entre environnements.

Bobot (l’IA à votre service)
  1. Contributeur
    hello
    essayer
    for /f "delims=" %%a in ('dir . /b/s ^| findstr /R "\\mon_repertoire$" ')  do set "path=%%~dpnxa"
    echo Le chemin est : %path%
    0
    1. Merci pour votre réponse cela fonctionne, cependant, j'aimerais savoir une dernière chose svp:

      j'ai une commande ou je copie colle un fichier d'un dossier à l'autre, cependant, ce dernier est volumineux,

      J'aimerais savoir sil était possible d'afficher une progress bar qui ping le process ou autre méthode qui permettent d'afficher l'état de progression d'une commande svp ?
      0
    2. Bonjour,

      Votre script ne pointe pas là ou je souhaite obtenir le path malheureusement, tenez:


      Le chemin est : C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\iCLS\;C:\Program Files\Intel\Intel(R) Management Engine Components\iCLS\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Windows\System32\OpenSSH\;C:\Users\Admin\AppData\Local\Microsoft\WindowsApps;


      Tandis que moi, je souhaite pointer sur un répertoire contenu dans mes documents

      Merci par avance
      0
    3. Contributeur
      j'ai une commande ou je copie colle un fichier d'un dossier à l'autre, cependant, ce dernier est volumineux,
      une commande DOS ? genre copy ou xcopy ?

      je n'ai pas compris la question du post 3
      0
    4. Bjr,

      Pour une commande xcopy svp ?
      0
    5. Contributeur
      lui peut-etre
      https://www.commentcamarche.net/download/s/robocopy
      0
  2. Contributeur
    dans "\\mon_repertoire$" tu as remplacé mon_repertoire par le nom de ton répertoire ?
    0
    1. Bonjour,

      Oui c'est ce que j'ai fais
      0
    2. Finalement j'obtiens ceci cependant, je ne souhaite pas observer le contenu interne au dossier mais juste obtenir le path de "répertoire"


      C:\Users\Admin\Documents>echo Le chemin est : C:\Users\Admin\Documents\repertoire\destination\2.BAT
      Le chemin est : C:\Users\Admin\Documents\repertoire\destination\2.BAT


      Or m'oi j'aimerais obtenir ceci svp:

      Le chemin est : C:\Users\Admin\Documents\repertoire

      Merci par avance
      0
    3. Contributeur
      que donne, dans une fenêtre DOS, juste
      dir . /b/s | findstr /R "\\ton_repertoire$"  
      0
    4. Findstr n'est pas reconnu:


      C:\Users\Admin\Documents>dir . /b/s | findstr /R "\\repertoire"
      'findstr' n’est pas reconnu en tant que commande interne
      ou externe, un programme exécutable ou un fichier de commandes.


      Vous n'auriez pas une solution plus fonctionnel svp ?

      Merci par avance
      0
    5. Je sais pas ce qui c'est passé mais la commande refonctionne:


      C:\Users\Admin\Documents>dir . /b/s | findstr /R "\\repertoire"
      C:\Users\Admin\Documents\repertoire
      C:\Users\Admin\Documents\repertoire.bat
      C:\Users\Admin\Documents\repertoire\destination
      C:\Users\Admin\Documents\repertoire\setup.exe
      C:\Users\Admin\Documents\repertoire\destination\2.BAT


      Du coup, j'aimerais bien obtenir ceci si possible svp uniquement :


      C:\Users\Admin\Documents\repertoire
      0
  3. Bonjour,

    %PATH% est une variable d'environnement, tu devrais changer le nom de ta variable pour t'éviter des problèmes.

    0
    1. Merci pour votre réponse mais j'obtiens toujours le même résultat:

      C:\Users\Admin\Documents>set "route=%C:\Users\Admin\Documents\http%3a%2f%2fcygwin.mirror.constant.com%2f"


      J'ai toujours le % qui est là et qui me gène....
      0
    2. @jojol_8144Ce pourcent ne devrait pas être là, c'est toi qui l'a rajouté.

      Un indice : quand on travaille directement dans la console on ne double pas les pourcents, regarde bien et tu trouveras ton erreur.
      0
    3. merci, j'ai trouvé la solution à mon problème
      0