2009-03-03 20 views
103

¿Existe un comando de línea de comandos 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?Comando de shell de Windows para obtener la ruta completa al directorio actual?

+1

Usted parece que faltan una parte vital de la cuestión. Por favor edita. – GEOCHET

+0

find/dir/to/start/from -type f -ls Este formato la fecha para encontrar numérico/dir/to/start/from -type f -exec ls -l --time-style = "+% Y% m % e% H:% M "{} \; –

Respuesta

170

Utilice cd sin argumentos si usa el shell directamente, o %cd% si desea usarlo en un archivo por lotes (se comporta como var de entorno).

+8

* ¿Cómo entendiste * lo que estaba tratando de decir de * eso *? Y, en virtud de dos y ventanas cmd, por lo general es simplemente "cd" – Rook

+9

Honestamente, no podía pensar en otra cosa que podrían estar tratando de hacer, como decía la pregunta. –

+0

@Trevor - Jejeje, sí. Cierto. – Rook

21

En Unix?

pwd

+1

OP originalmente pidió 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

5

Para Windows, cd por sí mismo le mostrará el directorio de trabajo actual.

Para sistemas UNIX y workalike, pwd realizará la misma tarea. También puede usar la variable de shell $PWD bajo 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.

+0

No obstante, 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

+1

Lo necesita en un archivo por lotes. – Ikke

+0

muy antiguo, pero solo por completitud: sí, Windows tiene una varible para esto. Se llama (supongo ...) '% cd%' – Stephan

3

Basado en la pregunta de seguimiento (almacenar los datos en una variable) en los comentarios a la publicación 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 en una pila que se puede restaurar con un "popd". En cualquier shell de Windows cmd moderno que es el camino a seguir cuando se hacen los archivos por lotes.

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

36

cita de la ayuda de Windows para el comando set (set /?):

 
If Command Extensions are enabled, then there are several dynamic 
environment variables that can be expanded but which don't show up in 
the list of variables displayed by SET. These variable values are 
computed dynamically each time the value of the variable is expanded. 
If the user explicitly defines a variable with one of these names, then 
that definition will override the dynamic one described below: 

%CD% - expands to the current directory string. 

%DATE% - expands to current date using same format as DATE command. 

%TIME% - expands to current time using same format as TIME command. 

%RANDOM% - expands to a random decimal number between 0 and 32767. 

%ERRORLEVEL% - expands to the current ERRORLEVEL value 

%CMDEXTVERSION% - expands to the current Command Processor Extensions 
    version number. 

%CMDCMDLINE% - expands to the original command line that invoked the 
    Command Processor. 

Nota la parte %CD% - expands to the current directory string..

6

Esto siempre ha trabajado para mí:

SET CurrentDir="%~dp0" 

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

ECHO %CurrentDir% 

Pause 
+2

Eso hace lo incorrecto: encuentra la ruta del script por lotes, no el directorio actual. –

+1

Downvoted debido a que no responde la pregunta de OP. – Tisch

+0

Voto por responder a la pregunta del OP ... y darme la solución exacta que estaba buscando. ¡Gracias! –

55

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

SET var=%cd% 
ECHO %var% 

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

enter image description here

Actualización: si lo hace un lugar de SET var = %cd%SET var=%cd%, a continuación es lo que sucede. Gracias a jeb.

enter image description here

Capturing the current directory from a batch file

+1

Según la pregunta, esta respuesta debería ser realmente la aceptada. –

+4

Pero no funciona, ya que 'SET var =% cd%' pone el valor en la variable 'var ' no en 'var'. Debería evitar espacios en el comando SET – jeb

+1

Según la pregunta, esta respuesta debería ser realmente la aceptada. –

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

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

9

Para Windows podemos usar

cd

y para Linux

comando pwd

está allí.

3

En Windows:

CHDIR Muestra el nombre del o cambia el directorio actual.

En Linux:

PWD Muestra el nombre del directorio actual.

0

En el símbolo del sistema de Windows, chdir o cd imprimirá la ruta completa del directorio de trabajo actual en la consola. Si queremos copiar la ruta, podemos usar: cd | clip.

Gracias.

-3

En Tipo de Windows cd por vía de trabajo actual En Linux pwd Por la ruta de trabajo actual

+2

Ya hay 10 respuestas con la misma solución, pero hay más explicaciones – jeb

Cuestiones relacionadas