Retrouver le chemin de répertoire en batch [Résolu]

A voir également:Retrouver le chemin de répertoire en batchModifier un chemin de répertoire ✓ - Forum - Linux / Unix Modifier le chemin de répertoire d'un program ✓ - Forum - Logiciels VBA : récupérer chemin de répertoire ✓ - Forum - VB / VBA Batch compter le nombre de fichier dans un répertoire - Forum - Programmation Cmd ne prend pas les chemins unc comme répertoires en cours - Forum - Autoit / batch

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 ?

Forum

A voir également:Retrouver le chemin de répertoire en batchModifier un chemin de répertoire ✓ - Forum - Linux / Unix Modifier le chemin de répertoire d'un program ✓ - Forum - Logiciels VBA : récupérer chemin de répertoire ✓ - Forum - VB / VBA Batch compter le nombre de fichier dans un répertoire - Forum - Programmation Cmd ne prend pas les chemins unc comme répertoires en cours - Forum - Autoit / batch

Web: www.shapebootstrap.net

3 réponses

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

hello
essayer

for /f "delims=" %%a in ('dir . /b/s ^| findstr /R "\\mon_repertoire$" ')  do set "path=%%~dpnxa"
echo Le chemin est : %path%

Reply
réponses:
  • auteur

  • auteur

    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 ?

  • auteur

    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

  • auteur

    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

  • auteur

    Bjr,

    Pour une commande xcopy svp ?

  • auteur

    lui peut-etre
    https://www.commentcamarche.net/download/s/robocopy

  • auteur

    Merci pour ce retour cependant, j'ai toujours le même souci avec ce script:


    for /f "delims=" %%a in ('dir . /b/s ^| findstr /R "\\mon_repertoire$" ') do set "path=%%~dpnxa"
    echo Le chemin est : %path%


    En effet, quand je souhaite obtenir le path du répertoire ciblé, cela ne fonctionne pas malheureusement , j'obtiens toujours ceci:


    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;

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

dans "\\mon_repertoire$" tu as remplacé mon_repertoire par le nom de ton répertoire ?

Reply
réponses:
  • auteur

  • auteur

    Bonjour,

    Oui c'est ce que j'ai fais

  • auteur

    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

  • auteur

    que donne, dans une fenêtre DOS, juste

    dir . /b/s | findstr /R "\\ton_repertoire$"  

  • auteur

    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

  • auteur

    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

  • auteur

    ne pas oublier le $
    doit etre dans un .bat
    attention %path% est une variable DOS

    for /f "delims=" %%a in ('dir . /b/s ^| findstr /R "\\repertoire$" ') do set "path=%%~dpnxa"
    echo Le chemin est : %path%

  • auteur

    Merci, ça marche avec "répertoire, par contre, cela ne fonctionne pas avec ce nom de répertoire j'obtiens ceci:


    for /f "delims=" %%a in ('dir . /b/s ^| findstr /R "\\http%3a%2f%2fcygwin.mirror.constant.com%2f$" ') do set "path=%%~dpnxa"
    echo Le chemin est : %path%



    C:\Users\Admin\Documents>for /F "delims=" %a in ('dir . /b/s | findstr /R "\\httpaffcygwin.mirror.constant.comf$" ') do set "path=%~dpnxa"

    C:\Users\Admin\Documents\Linux>echo 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;
    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;


    Pourriez-vous m'aider à régler ce soucis svp, j'ai vraiment besoin de ce nom de repertoire svp ?

  • auteur

    j'ai aussi essayé comme ceci mais ça ne fonctionne pas:


    dir . /b/s ^| findstr /R "\\http%3a%2f%2fcygwin.mirror.constant.com%2f$"
    La syntaxe du nom de fichier, de répertoire ou de volume est incorrecte.

  • auteur

    Up

  • auteur

    comment s'appelle le répertoire retourné par la commande dir

  • auteur

    16/07/2019  13:18    <DIR>          http%3a%2f%2fcygwin.mirror.constant.com%2f


    Et lors de l'exécution de la commande, j'ai ceci qui s'affiche:


    C:\Users\Admin\Documents>for /F "delims=" %a in ('dir . /b/s | findstr /R "httpaffcygwin.mirror.constant.comf$" ') do set "path=%~dpnxa"


    Au lieu d'avoir mon répertoire avec les chiffres et les pourcentages,

    Pourriez-vous m'aider svp ?

    Et quand j'exécute la boucle directement sur la console, j'ai ceci:


    C:\Users\Admin\Documents>for /f "delims=" %%a in ('dir . /b/s ^| findstr /R "http%3a%2f%2fcygwin.mirror.constant.com%2f$" ') do set "path=%%~dpnxa"
    %%a était inattendu.

  • auteur

    les caractères spéciaux doivent être protégés en .bat et dans for
    je veux juste le nom vu par DOS : aller dans le répertoire, taper dir

  • auteur

    Je reviens car j'ai effectué des tests supplémentaires et en enlevant un % à %%a, j'obtiens ceci:


    C:\Users\Admin>for /f "delims=" %a in ('dir . /b/s ^| findstr /R "http%3a%2f%2fcygwin.mirror.constant.com%2f$" ') do set "path=%%~dpnxa"

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


    cependant, j'aimerais enlever le % devant le C:/ car je souhaite récupérer ce path pour le réutiliser ailleurs....

    Est-il possible, soit d'enlever ce % via une commande plus optimisé que mon bricolage, ou alors de récupérer mon ceci dans la variable %path% et modifier la chaine ce caractère dans la variable pour que le ne garde que
    C:\Users\Admin\Documents\http%3a%2f%2fcygwin.mirror.constant.com%2f"
    svp ?

    EDIT:

    j'ai tapé comme vous me l'aviez demandé la commande dir et vous ais mis le résultat dans mon post précédent le résultat:

    je vous le repost:

    16/07/2019 13:18 <DIR> http%3a%2f%2fcygwin.mirror.constant.com%2f

  • auteur

    protéger les % avec %%

    ......('dir . /b/s ^| findstr /R "\\http%%3a%%2f%%2fcygwin.mirror.constant.com$" ') ....

  • auteur

    merci mais malheureusement j'obtiens ceci:


    for /F "delims=" %a in ('dir . /b/s | findstr /R "http%3a%2f%2fcygwin.mirror.constant.com$" ') do set "path=%~dpnxa"

    C:\Users\Admin\Documents>echo 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;
    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;


    Le nom du répertoire est bon mais je tombe sur ceci.

    J'aurais une autre question en plus svp:

    comment puis-je retirer le premier caractère de ceci stocké dans la variable (à savoir le %) svp ?:



    C:\Users\Admin>for /f "delims=" %a in ('dir . /b/s ^| findstr /R "http%3a%2f%2fcygwin.mirror.constant.com%2f$" ') do set "path=%%~dpnxa"

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


    J'aimerais que ceci:

    %C:\Users\Admin\Documents\http%3a%2f%2fcygwin.mirror.constant.com%2f


    Devienne comme ça:


    C:\Users\Admin\Documents\http%3a%2f%2fcygwin.mirror.constant.com%2f


    Existe-t-il un moyen de faire cela en traitant le variable sur la console svp ?

  • auteur

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

    C:> echo %var%
    %C:\Users\Admin\Documents\http%3a%2f%2fcygwin.mirror.constant.com%2f

    C:> echo %var:~1,100%
    C:\Users\Admin\Documents\http%3a%2f%2fcygwin.mirror.constant.com%2f

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Bonjour,

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

Reply
réponses:
  • auteur

    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....

  • auteur

    Ce 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.

  • auteur

    merci, j'ai trouvé la solution à mon problème

Leave a Replay

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