¿Por qué "cd D:" no cambia el contexto del comando a D :? [duplicar]

19

Posible duplicado:
usando el comando cd en la línea de comandos de Windows, no puedo navegar a D: \

Cada vez que quiero cambiar el contexto del directorio a otra unidad (D, E, F o lo que sea ...) en un símbolo del sistema de Windows, debo usar el "Drive letter":\comando para cambiarlo. Si trato con el "comando cd" en la cd H:\que acaba de eco H: \ para mí y no hacer nada:

Ingrese la descripción de la imagen aquí

¿Hay alguna razón para tal comportamiento? Quiero decir, ¿no deberías cd commandtrabajar para hacer esto? ¿Por qué no?

Diogo
fuente
2
Relacionados .
Daniel Beck

Respuestas:

28

Tratar:

cd /d d:

/d también cambiará las letras de unidad y los directorios, para obtener más información, consulte cd /?

jftuga
fuente
1
Parece que cmd.exe imita el comportamiento de DOS bastante bien en esta situación, por lo que el "directorio actual" para cada unidad se recuerda claramente.
LawrenceC
44
Esta es la verdadera respuesta a "por qué las viudas funcionan de esta manera": porque DOS lo hizo de esa manera.
KutuluMike
12

La razón por la cual Windows se comporta de esta manera es porque DOS se comportó de esa manera.

En DOS, cada unidad tiene su propio directorio actual, y el cdcomando cambia el directorio actual en una unidad. Si esa también es la unidad actual , su directorio de trabajo cambia junto con ella. Si desea cambiar la unidad actual, simplemente especifique la letra de la unidad como un comando.

Tenga en cuenta que Windows ya no funciona de esta manera (solo tiene un directorio actual en cualquier momento), pero el shell de comandos hace todo lo posible para fingir que todavía hay directorios actuales por unidad. Presumiblemente, esto es para preservar la compatibilidad con los archivos por lotes de DOS existentes.

La razón por la cual DOS funciona de esta manera se remonta a las versiones más antiguas de DOS, y CP / M antes. Los detalles sangrientos se pueden encontrar en el blog de Raymond Chen .

KutuluMike
fuente
6

La respuesta directa es que "porque no está escrito para funcionar de esa manera". Simplemente entrando D:hará lo que quieras.

La entrada curiosa cd D:\somedir, de hecho, cambiará el directorio actual en D: a \ data, pero no cambiará el símbolo del sistema actual a D :.

uSlackr
fuente