Comando de shell de Windows para obtener la ruta completa al directorio actual?

223

¿Existe un comando de línea de comando de Windows que pueda usar para obtener la ruta completa al directorio de trabajo actual?

Además, ¿cómo puedo almacenar esta ruta dentro de una variable utilizada en un archivo por lotes?

usuario62958
fuente
find / dir / to / start / from -type f -ls Este formato de la fecha a numérico find / dir / to / start / from -type f -exec ls -l --time-style = "+% Y% m% e% H:% M "{} \;
eche un vistazo a esta respuesta stackoverflow.com/a/52301748/2704032
Vishrant

Respuestas:

356

Úselo cdsin argumentos si está utilizando el shell directamente, o %cd%si desea utilizarlo en un archivo por lotes (se comporta como una variable de entorno).

Trevor Bramble
fuente
11
¿Cómo entendiste lo que estaba tratando de decir de eso ? Y, bajo dos y ventanas cmd, generalmente es solo "cd"
Rook
10
Honestamente, no podía pensar en otra cosa que pudieran estar tratando de preguntar como decía la pregunta.
Trevor Bramble
1
¿Puedo almacenar esta ruta dentro de una variable en un archivo .bat?
user62958 03 de
@unknown: en primer lugar, es mejor que describas el problema original.
Rook
100

Puede establecer una variable de lote / entorno de la siguiente manera:

SET var=%cd%
ECHO %var%

captura de pantalla de muestra de un Windows 7 x64 cmd.exe.

ingrese la descripción de la imagen aquí

Actualización: si haces un enSET var = %cd%lugar deSET var=%cd%, a continuación es lo que sucede. Gracias a jeb.

ingrese la descripción de la imagen aquí

Capturar el directorio actual de un archivo por lotes

gmaran23
fuente
2
Según la pregunta, esta respuesta debería ser la aceptada.
René Nyffenegger
77
Pero no funciona, ya que SET var = %cd%poner el valor en la variable var<space>no en var. Debe evitar espacios en el comando SET
jeb
1
Según la pregunta, esta respuesta debería ser la aceptada.
shridutt kothari
51

Cite la ayuda de Windows para el setcomando ( set /?):

Si las extensiones de comando están habilitadas, entonces hay varias dinámicas
variables de entorno que se pueden expandir pero que no aparecen en
la lista de variables que muestra SET. Estos valores variables son
calculado dinámicamente cada vez que se expande el valor de la variable.
Si el usuario define explícitamente una variable con uno de estos nombres, entonces
esa definición anulará la dinámica que se describe a continuación:

% CD%: se expande a la cadena de directorio actual.

% DATE%: se expande a la fecha actual con el mismo formato que el comando DATE.

% TIME%: se expande a la hora actual utilizando el mismo formato que el comando TIME.

% RANDOM%: se expande a un número decimal aleatorio entre 0 y 32767.

% ERRORLEVEL%: se expande al valor ERRORLEVEL actual

% CMDEXTVERSION%: se expande a las extensiones actuales del procesador de comandos
    número de versión.

% CMDCMDLINE%: se expande a la línea de comando original que invoca el
    Procesador de comando.

Tenga en cuenta la %CD% - expands to the current directory string.parte.

Patrick Cuff
fuente
26

En Unix?

pwd

Stephen Curial
fuente
2
OP originalmente solicitó un "comando" y no especificó el sistema operativo. El sistema operativo ahora se ha especificado, por lo que esta respuesta ya no es relevante.
Tisch
18

Para Windows podemos usar

cd

y para Linux

pwd

El comando está ahí.

Nikunj K.
fuente
17

Esto siempre me ha funcionado:

SET CurrentDir="%~dp0"

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

ECHO %CurrentDir%

Pause
Escamas de Fred
fuente
2
Eso hace lo incorrecto: encuentra la ruta del script por lotes, no el directorio actual.
Harry Johnston
2
Votaron por responder a la pregunta del OP ... y darme la solución exacta que estaba buscando. ¡Gracias!
A-Diddy
Buena atrapada. El directorio actual podría referirse al comando que llama al archivo en lugar de la ubicación del archivo en sí.
Tam Le
9

Para Windows, cdpor sí solo le mostrará el directorio de trabajo actual.

Para sistemas UNIX y workalike, pwdrealizará la misma tarea. También puede usar la $PWDvariable de shell debajo de algunos shells. No estoy seguro de si Windows admite obtener el directorio de trabajo actual a través de una variable de shell o no.

Michael Trausch
fuente
Sin embargo, no puedo entender por qué necesita "cd" para ver su directorio actual. Por defecto, es visible como día. Y si lo ha cambiado, entonces ciertamente sabe lo que hace "cd".
Rook
muy antiguo, pero solo para completar: sí, Windows tiene una variable para esto. Se llama (supongo ...)%cd%
Stephan
8

En Windows:

CHDIR Muestra el nombre o cambia el directorio actual.

En Linux:

PWD Muestra el nombre del directorio actual.

Ajay Jayavarapu
fuente
5

Según la pregunta de seguimiento (almacenar los datos en una variable) en los comentarios a la publicación de chdir, apuesto a que quiere almacenar la ruta actual para restaurarla después de cambiar los directorios.

El usuario original debe mirar "pushd", que cambia el directorio y empuja el actual a una pila que se puede restaurar con un "popd". En cualquier shell de cmd de Windows moderno, ese es el camino a seguir al hacer archivos por lotes.

Si realmente necesita tomar la ruta actual, las cáscaras de cmd modernas también tienen una variable% CD% que puede guardar fácilmente en otra variable como referencia.

marca
fuente
5

Cree un .batarchivo debajo System32, nombremos que copypath.batel comando para copiar la ruta actual podría ser :

echo %cd% | clip

Explicación:

%cd% te dará la ruta actual

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.

Ahora copyclipestá disponible desde todas partes.

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

Pero, por supuesto , la respuesta de gmaran23 es la más fácil.

René Nyffenegger
fuente
Su respuesta es mejor por definición porque su respuesta es incorrecta. No funciona para caminos con espacios.
Garric
Agregar tokens=*arreglos que.
René Nyffenegger
2

En un símbolo del sistema de Windows, chdiro cdimprimirá la ruta completa del directorio de trabajo actual en la consola.

Si queremos copiar la ruta, entonces podemos utilizar: cd | clip.

Samrat Debroy
fuente
0

En Windows, escriba cdla ruta actual de trabajo.

En Linux, pwdpara la ruta de trabajo actual.

Shafeer khan
fuente
55
Ya hay 10 respuestas con la misma solución, pero más explicaciones
jeb
0

Como uno de los posibles códigos

    echo off
    for /f "usebackq tokens=* delims= " %%x in (`chdir`) do set var=%var% %%x
    echo The current directory is: "%var:~1%"
Garric
fuente