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 location
le mostrará el contenido de la ubicación.La especificación
C:
de muchos comandos, incluido elDIR
comando, se refiere a la unidad C y al directorio actual. Para ver su directorio actual, escriba esto:El
cd
comando 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óncd
por sí solo le mostrará el directorio actual.Con toda probabilidad, si no ha estado usando el
cd
comando, 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 Files
Del 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,
cmd
recuerda 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/d
interruptor 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 variables
mencionado 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\system32
oc:\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 laC
unidad 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
C
disco y simplemente escribedir
y presionaenter
, obtendrá el mismo contenido dedir C:
. Si está en una unidad diferente y escribeC:
para volver a cambiar a laC
unidad, 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:
.dir
es 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