Cómo cambiar el directorio de trabajo actual usando un archivo por lotes

110

Necesito ayuda para escribir un archivo por lotes. Tengo una ruta almacenada en una raíz variable de la siguiente manera:

set root=D:\Work\Root

Luego estoy cambiando mi directorio de trabajo a esta raíz de la siguiente manera:

cd %root%

Cuando ejecuto este archivo por lotes desde cualquier lugar de la unidad D, esto se hace correctamente. Pero cuando ejecuto el mismo archivo por lotes desde otra unidad, cd% root% no funciona.

¿Hay alguna forma de obtener la letra de la unidad de la variable raíz? Entonces puedo cambiar el directorio actual a esta unidad primero y luego cd% root% funcionará.

Ananya
fuente

Respuestas:

160

Especifique /Dpara cambiar también la unidad.

CD /D %root%
Andriy M
fuente
1
Otras respuestas dicen \d(en minúsculas) ¿hay alguna diferencia entre ambos? ¿La opción no distingue entre mayúsculas y minúsculas?
josch
3
@josch: Sí, si estamos hablando de los comandos internos de CMD, los parámetros de cambio como los /Danteriores no distinguen entre mayúsculas y minúsculas ( /D= /d), al igual que los propios comandos ( CD= cd). Creo que eso también es cierto para todas las utilidades de línea de comandos externas de Windows (como FINDSTR, SORTetc.) Las herramientas de terceros, por otro lado, pueden usar parámetros que distinguen entre mayúsculas y minúsculas.
Andriy M
no vale la pena una respuesta propia, pero se puede set "root=/d D:\Work\Root"y cd %root%ni siquiera set "root=cd /d D:\Work\Root"y justo%root%
Stephan
40

Solo use cd /d %root%para cambiar las letras del controlador y cambiar de directorio.

Alternativamente, use pushd %root%para cambiar las letras de la unidad al cambiar de directorio, así como para almacenar el directorio anterior en una pila para que pueda usarlo popdpara regresar.

Tenga en cuenta que pushdtambién le permitirá cambiar directorios a un recurso compartido de red. En realidad, asignará una unidad de red para usted y luego la desasignará cuando ejecute el popdpara ese directorio.

Gabe
fuente
29

Prueba esto

chdir /d D:\Work\Root

Disfruta del enraizamiento;)

mantarraya_
fuente
6
¿Enraizamiento? ¿Qué significa eso en este contexto?
Mathias Lykkegaard Lorenzen
Cabe señalar que antes y después del directorio, "debe ponerse así; chdir / d" D: \ Work \ Root "
Ad Infinitum
12

Una sintaxis más simple podría ser

pushd% root%

ServilletaBob
fuente
3
¡Vaya, de todas las soluciones, la clasificación más baja es la que realmente funcionó como un encanto! ¡Gracias!
Arto Kalishian