¿Cuál es la diferencia entre "C: FILE.TXT" y "C: \ FILE.TXT"?

Respuestas:

26

C:FILE.TXTse refiere FILE.TXTen el directorio actual de la unidadC:

C:\FILE.TXThace referencia FILE.TXTen el directorio raíz de drive C:( C:\)

Ellos no son los mismos.

Editar: Ejemplo de símbolo del sistema:

Windows recuerda un directorio de trabajo actual para cada unidad. Digamos que está trabajando en el directorio C:\UTILSy luego cambia a la unidad F:y luego al directorio BINen F::

C: \ UTILS> F:
 F: \> CD BIN
 F: \ BIN>

En este punto, el directorio de trabajo actual C:es todavía C:\UTILSy el directorio de trabajo actual F:esF:\BIN

Puede verificar esto con el CDcomando:

F: \ BIN> CD C:
C: \ UTILS

F: \ BIN>

Tenga en cuenta que no volvió a cambiar la unidad de trabajo C:utilizando este comando.

Como verá en los siguientes ejemplos de comandos, el uso de una barra diagonal inversa ( \) inmediatamente después de un nombre de unidad ( X:) hace que la ubicación del archivo sea absoluta. La omisión de la barra diagonal inversa implica automáticamente el directorio de trabajo actual para la unidad.

F: \ BIN> COPY F: PROGRAM.EXE C:     Copies * F: \ BIN \ PROGRAM.EXE to C: \ UTILS \ PROGRAM.EXE 
F: \ BIN> COPY F: PROGRAM.EXE C: \    Copies * F: \ BIN \ PROGRAM.EXE a C: \ PROGRAM.EXE 
F: \ BIN> COPY F: \ PROGRAM.EXE C:    Copia * F: \ PROGRAM.EXE a C: \ UTILS \ PROGRAM.EXE

F: \ BIN> COPY F: PROGRAM.EXE C: NEW \ NEW_PROG.EXE Copias * y cambios de    nombre
                                                F: \ BIN \ PROGRAM.EXE
                                                a C: \ BIN \ NEW \ NEW_PROG.EXE
 

* 'Copias' significa 'intentos de copiar'. Estos comandos fallarán si las estructuras de directorio asumidas y los directorios de trabajo actuales no existen o si otro proceso los cambia.

En el caso de que el directorio de trabajo es el directorio raíz (por ejemplo. C:\) A continuación C:PROGRAM.EXEy C:\PROGRAM.EXEpunto en la misma ubicación, pero se han llegado a través de diferentes métodos.

Mike Fitzpatrick
fuente
2
En realidad, pueden ser iguales si el directorio actual de C: es la raíz.
Synetech
3
@Synetech; El hecho de que puedan referirse al mismo lugar no significa que sean lo mismo
Phoshi
Tenga en cuenta que Windows NT ya no rastrea los "directorios actuales" por unidad; esta sintaxis ahora solo es útil en el cmd.exeshell. En otros programas, si se proporciona una unidad diferente a la actual, dichas especificaciones de ruta siempre serán relativas a la raíz de esa unidad.
user1686
@Phoshi, sí, son iguales en ciertos contextos. Es como decir que int xes lo mismo que int y; no son ===, pero pueden ser == si ambos tienen el mismo valor. @grawity, por supuesto, las aplicaciones de Windows (Win32, no solo NT) no tienen cwd por unidad, ya que no significaría nada en ese contexto. De todos modos, no es solo cmd; Todas las aplicaciones de consola lo tienen .
Synetech
@ Mike en realidad después de leer la respuesta, todavía no puedo notar la diferencia. ¿podría elaborarlo para un usuario tonto?
Pacerier