Accidentalmente descubrí que si lo hago:
dir C:\
Obtengo una lista de archivos que son hijos directos de la unidad C: en la raíz.
Sin embargo, si lo hago:
dir C:
Obtengo una gran lista de archivos que ni siquiera estoy seguro de dónde están (DLL, EXE, CPL, etc.).
¿Sabes por qué sucede esto y de dónde viene esta lista?

dir c:devuelve la lista de archivos en su directorio actualRespuestas:
Especificar
DIR locationle mostrará el contenido de la ubicación.La especificación
C:de muchos comandos, incluido elDIRcomando, se refiere a la unidad C y al directorio actual. Para ver su directorio actual, escriba esto:El
cdcomando generalmente se usa para cambiar el directorio actual. Sin embargo, en MS-DOS (y sistemas operativos similares, incluido Microsoft Windows moderno, pero sin incluir Unix), la ejecucióncdpor sí solo le mostrará el directorio actual.Con toda probabilidad, si no ha estado usando el
cdcomando, entonces su directorio actual es probablemente el directorio en el que se instaló su sistema operativo. (Al menos, ese es un comportamiento común para los sistemas Microsoft Windows).Puedes hacerlo:
Eso te mostrará el contenido de
C:\Program FilesDel mismo modo, puede hacer algo como:
copy C:*.*y todo el contenido del directorio actual se copiará.Cuando especifica
C:\, la barra diagonal inversa indica el directorio "raíz", también conocido como el directorio "nivel superior". Eso podría, o no, ser lo mismo que su directorio actual.Si solo especifica
DIR \, se asumirá la unidad actual. (Puede escribir algo comoC:oD:, como un comando completo (en una línea sola), para cambiar qué unidad se considera la "unidad actual".) Si solo especificaDIR, la unidad actual y el directorio actual serán ficticio.fuente
TL; DR :
dir C:enumerará el directorio actual enC:lo que sea que sea, a diferencia dedir C:\lo que siempre enumerará la\raíz deC:.Larga historia ... En la línea de comandos,
cmdrecuerda el directorio actual de cada unidad a la que accedió durante la sesión.El directorio actual en una unidad que
X:no sea la actual se puede configurar concd X:\etc(sin el/dinterruptor que también cambiaría la unidad actual aX:), y es devuelto porcd X:(sin a\), ambos anotados en lacd /?ayuda:Consulte ¿Por qué cada unidad tiene su propio directorio actual? para antecedentes, incluida esta cita.
Lo
strange environment variablesmencionado en la publicación vinculada ¿Cuáles son estas extrañas = C: variables de entorno? se puede verset ""en el indicador de cmd, por ejemplo:fuente
c:\Users\<you>)c:\windows\system32oc:\windows\temp. Sin embargo, nunca asuma nada de esto: siempre indique o cambie al directorio que desea ver en lugar de confiar en que cualquier valor predeterminado particular se aplique de manera consistente.La razón por la que obtiene dos directorios diferentes es simple. El
\es la diferencia.dir C:\está pidiendo la lista de directorios de laCunidad en su\.\es la carpeta raízdir C:está pidiendo la lista del directorio de dónde se encuentra (o fue el último, si cambió las unidades)Si está en el
Cdisco y simplemente escribediry presionaenter, obtendrá el mismo contenido dedir C:. Si está en una unidad diferente y escribeC:para volver a cambiar a laCunidad, terminará en el directorio que vio cuando escribiódir C:.fuente
Como esto no es StackOverflow, esto solo debería ser un comentario, en el mejor de los casos, pero no cabe:
.NET Framework (quizás a través de Win32) refleja el directorio actual de la unidad actual:
fuente
Estás ejecutando dos comandos juntos.
c:es en sí mismo un comando para cambiar a la UBICACIÓN ANTERIOR en la unidad C:. Por lo tanto, mantendría la ubicación antes de cambiar las unidades cond:oe:.dires un comando utilizado para enumerar el contenido de un directorio.Básicamente, está enumerando el contenido de su carpeta anterior en la unidad C: aunque esté en otra unidad.
fuente