Commande shell Windows pour obtenir le chemin d'accès complet au répertoire en cours?


223

Existe-t-il une commande de ligne de commande Windows que je peux utiliser pour obtenir le chemin d'accès complet au répertoire de travail actuel?

De plus, comment puis-je stocker ce chemin dans une variable utilisée dans un fichier batch?


find / dir / to / start / from -type f -ls Ce formatage la date en numérique find / dir / to / start / from -type f -exec ls -l --time-style = "+% Y% m% e% H:% M "{} \;

jetez un oeil à cette réponse stackoverflow.com/a/52301748/2704032
Vishrant

Réponses:


356

À utiliser cdsans argument si vous utilisez directement le shell ou %cd%si vous souhaitez l'utiliser dans un fichier batch (il se comporte comme une variable d'environnement).


11
Comment avez - vous compris ce qu'il essayait de dire de cela ? Et, sous dos et windows cmd, c'est généralement juste un "cd"
Rook

10
Honnêtement, je ne pouvais penser à rien d'autre qu'ils pourraient essayer de poser comme la question le disait.
Trevor Bramble

1
Puis-je stocker ce chemin dans une variable dans un fichier .bat?
user62958

@unknown - vous pourriez être mieux en décrivant le problème d'origine en premier lieu.
Tour

100

Vous pouvez définir une variable de lot / environnement comme suit:

SET var=%cd%
ECHO %var%

exemple de capture d'écran à partir d'un Windows 7 x64 cmd.exe.

entrez la description de l'image ici

Mise à jour: si vous faites unSET var = %cd%au lieu deSET var=%cd%, voici ce qui se passe. Merci à jeb.

entrez la description de l'image ici

Capture du répertoire courant à partir d'un fichier batch


2
Selon la question, cette réponse devrait en fait être acceptée.
René Nyffenegger

7
Mais il ne fonctionne pas, comme SET var = %cd%mettre la valeur dans la variable var<space>non dans var. Vous devez éviter les espaces dans la commande SET
jeb

1
Selon la question, cette réponse devrait en fait être acceptée.
shridutt kothari

51

Citez l'aide de Windows pour la setcommande ( set /?):

Si les extensions de commande sont activées, il existe plusieurs dynamiques
variables d'environnement qui peuvent être développées mais qui n'apparaissent pas dans
la liste des variables affichées par SET. Ces valeurs variables sont
calculé dynamiquement à chaque fois que la valeur de la variable est développée.
Si l'utilisateur définit explicitement une variable avec l'un de ces noms, alors
cette définition remplacera celle dynamique décrite ci-dessous:

% CD% - se développe dans la chaîne de répertoire actuelle.

% DATE% - se développe à la date actuelle en utilisant le même format que la commande DATE.

% TIME% - se développe à l'heure actuelle en utilisant le même format que la commande TIME.

% RANDOM% - se développe en un nombre décimal aléatoire compris entre 0 et 32767.

% ERRORLEVEL% - se développe à la valeur ERRORLEVEL actuelle

% CMDEXTVERSION% - se développe aux extensions de processeur de commande actuelles
    numéro de version.

% CMDCMDLINE% - se développe sur la ligne de commande d'origine qui a appelé le
    Processeur de commande.

Notez la %CD% - expands to the current directory string.pièce.


26

Sous Unix?

pwd


2
OP a initialement demandé une "commande" et n'a pas spécifié OS. Le système d'exploitation a maintenant été spécifié, cette réponse n'est donc plus pertinente.
Tisch

18

Pour Windows, nous pouvons utiliser

cd

et pour Linux

pwd

la commande est là.


17

Cela a toujours fonctionné pour moi:

SET CurrentDir="%~dp0"

ECHO The current file path this bat file is executing in is the following:

ECHO %CurrentDir%

Pause

2
Cela fait la mauvaise chose - trouve le chemin du script batch, pas le répertoire courant.
Harry Johnston

2
A voté pour avoir répondu à la question du PO ... et pour m'avoir donné la solution exacte que je cherchais. Merci!
A-Diddy

Belle prise. Le répertoire actuel peut faire référence à la commande qui appelle le fichier au lieu de l'emplacement du fichier lui-même.
Tam Le

9

Pour Windows, cdseul vous montrera le répertoire de travail actuel.

Pour UNIX et les systèmes de travail, pwdexécutera la même tâche. Vous pouvez également utiliser la $PWDvariable shell sous certaines coquilles. Je ne sais pas si Windows prend en charge l'obtention du répertoire de travail actuel via une variable shell ou non.


Je ne peux cependant pas comprendre pourquoi il a besoin de "cd" pour voir son répertoire actuel. Par défaut, il est visible comme jour. Et s'il l'a changé, alors il sait certainement ce que fait "cd".
Tour

très vieux, mais juste pour être complet: oui, les fenêtres ont une variable pour cela. Il est nommé (devinez ...)%cd%
Stephan

8

Sous Windows:

CHDIR Affiche le nom ou modifie le répertoire courant.

Sous Linux:

PWD Affiche le nom du répertoire actuel.


5

Sur la base de la question de suivi (stocker les données dans une variable) dans les commentaires du post chdir, je parie qu'il veut stocker le chemin actuel pour le restaurer après avoir changé de répertoire.

L'utilisateur d'origine devrait regarder "pushd", qui change de répertoire et pousse le répertoire actuel sur une pile qui peut être restaurée avec un "popd". Sur tout shell cmd Windows moderne, c'est la voie à suivre lors de la création de fichiers batch.

Si vous avez vraiment besoin de saisir le chemin actuel, les shells cmd modernes ont également une variable% CD% que vous pouvez facilement ranger dans une autre variable pour référence.


5

Créez un .batfichier sous System32, appelons-le, copypath.batla commande pour copier le chemin actuel pourrait être :

echo %cd% | clip

Explication:

%cd% vous donnera le chemin actuel

CLIP

Description:
    Redirects output of command line tools to the Windows clipboard.
    This text output can then be pasted into other programs.

Parameter List:
    /?                  Displays this help message.

Examples:
    DIR | CLIP          Places a copy of the current directory
                        listing into the Windows clipboard.

    CLIP < README.TXT   Places a copy of the text from readme.txt
                        on to the Windows clipboard.

Maintenant copyclipest disponible de partout.


3
@echo off
for /f "usebackq tokens=*" %%x in (`chdir`) do set var=%%x
echo The currenct directory is: %var%

Mais, bien sûr , la réponse de gmaran23 est la plus facile.


Sa réponse est meilleure par définition car votre réponse est fausse. Cela ne fonctionne pas pour les chemins avec des espaces.
Gosha

L'ajout de tokens=*correctifs.
René Nyffenegger

2

Dans une invite de commande Windows, chdirou cdaffichera le chemin complet du répertoire de travail actuel dans la console.

Si nous voulons copier le chemin alors nous pouvons utiliser: cd | clip.


0

Sous Windows, saisissez cdle chemin de travail actuel.

Sous Linux, pwdpour le chemin de travail actuel.


5
Il y a déjà 10 réponses avec la même solution, mais plus d'explications
jeb

0

Comme l'un des codes possibles

    echo off
    for /f "usebackq tokens=* delims= " %%x in (`chdir`) do set var=%var% %%x
    echo The current directory is: "%var:~1%"
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.