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

Respuestas:


160

Especifique /Dpara cambiar también la unidad.

CD /D %root%

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.



12

Una sintaxis más simple podría ser

pushd% root%


3
¡Vaya, de todas las soluciones, la clasificación más baja es la que realmente funcionó como un encanto! ¡Gracias!
Arto Kalishian
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.