dir C: vs dir C: \


17

Ho scoperto per caso che se lo faccio:

dir C:\

Ottengo un elenco di file che sono figli diretti dell'unità C:, nella radice.

Tuttavia, se lo faccio:

dir C:

Ottengo un enorme elenco di file che non sono nemmeno sicuro di dove siano (DLL, EXE, CPL, ecc.).

Sai perché questo accade e da dove proviene questo elenco?


10
dir c:restituisce l'elenco dei file nella directory corrente
gioco di

2
@ The_IT_Guy_You_Don't_Like A meno che tu non sia su una diversa unità, nel qual caso immagina che ogni unità abbia una directory corrente, quindi se sei su Q: \ mostra per qualunque directory "sei" su C.
barlop

3
@BrianDrummond Nope. 100% sbagliato. Ogni unità in una sessione di Windows ha una propria directory di lavoro indipendente per processo. Non ha assolutamente un unico nome di directory di lavoro per tutte le unità. Provalo.
Andrew Medico,

@AndrewMedico Dovrei scavare qualcosa con Windows per confermare - forse mi ricordo di DOS, LOL! quindi ti rimanderò. Commento cancellato
Brian Drummond,

Risposte:


19

Se si specifica, DIR locationverranno visualizzati i contenuti della posizione.

Specificare C:molti comandi, incluso il DIRcomando, si riferisce all'unità C e alla directory corrente. Per vedere la tua directory corrente, digita questo:

c: 
cd

Il cdcomando viene in genere utilizzato per modificare la directory corrente. Tuttavia, in MS-DOS (e sistemi operativi simili, incluso Microsoft Windows moderno, ma non Unix incluso), in esecuzione cdda solo mostrerà la directory corrente.

Con ogni probabilità, se non hai utilizzato il cdcomando, probabilmente la tua directory corrente è la directory in cui è stato installato il tuo sistema operativo. (Almeno, questo è un comportamento comune per i sistemi Microsoft Windows.)

Puoi farlo:

cd "C:\Program Files"
cd
dir c:

Questo ti mostrerà il contenuto di C:\Program Files

Allo stesso modo, puoi fare qualcosa del genere: copy C:*.*e tutti i contenuti della directory corrente verranno copiati.

Quando si specifica C:\, quindi la barra rovesciata indica la directory "root", nota anche come directory "top level". Potrebbe essere o meno la stessa cosa della directory corrente.

Se si specifica semplicemente DIR \, verrà presunta l'unità corrente. (È possibile digitare qualcosa di simile C:o D:, come un intero comando (su una riga da solo), per modificare quale unità è considerata come "unità corrente".) Se si specifica semplicemente DIR, allora l'unità corrente e la directory corrente saranno presunto.


O si! Questo ha tutto il senso. Grazie mille. Conosco molto più bene la shell unix, che non ha questo tipo di comportamento. E sì, non ho usato "cd" in quella sessione, quindi i contenuti mostrati erano da "C: \ WINDOWS \ system32". Cordiali saluti.
Nuno,

21

TL; DR - dir C:elencherà la directory corrente su C:qualunque cosa accada, al contrario della dir C:\quale elencherà sempre la \radice di C:.

Storia lunga ... Al prompt della riga di comando, cmdricorda la directory corrente per ogni unità a cui ha avuto accesso durante la sessione.

La directory corrente su un'unità X:diversa da quella corrente può essere impostata con cd X:\etc(senza il /dcommutatore che cambierebbe anche l'unità corrente in X:), e viene restituita da cd X:(senza una \) - entrambe annotate nella guida cd /?:

Digitare unità CD: per visualizzare la directory corrente nell'unità specificata.

Utilizzare l'opzione / D per modificare l'unità corrente oltre a modificare la directory corrente per un'unità.

Vedi Perché ogni unità ha la sua directory corrente? per lo sfondo, compresa questa citazione.

Ricordare che la directory corrente per ogni unità è stata preservata da [ nb DOS ], almeno per i file batch, anche se in Win32 non esiste in realtà un concetto come una directory corrente per unità. In Win32, tutto ciò che hai è una directory corrente. L'aspetto che ogni unità ha la propria directory corrente è un falso da cmd.exe, che utilizza strane variabili d'ambiente per creare l'illusione ai file batch che ogni unità ha la propria directory corrente.

Il di strange environment variablescui al post collegato Che cosa sono queste strane = C: variabili di ambiente? può essere visualizzato con set ""al prompt di cmd, ad esempio:

C:\temp>cd X:\etc

C:\temp>cd C:
C:\temp

C:\temp>cd X:
X:\etc

C:\temp>set ""
=C:=C:\temp
=X:=X:\etc
ALLUSERSPROFILE=C:\ProgramData
[...]

1
dir C: elencherà la directory corrente su C: - per ulteriori dettagli, se non hai impostato la directory corrente su C: supponendo che sia la tua partizione di sistema (quella che contiene i file di Windows) e dipende da come sei registrato e quale utente e quale versione di Windows, la directory corrente predefinita sarà la home directory del contesto utente corrente ( c:\Users\<you>) c:\windows\system32oppure c:\windows\temp. Non dare mai per scontato nulla di tutto questo: dichiarare o passare sempre alla directory che si desidera guardare invece di fare affidamento sull'applicazione coerente di un determinato valore predefinito.
David Spillett,

5

Il motivo per cui si ottengono due directory diverse è semplice. Il \è la differenza.

dir C:\sta chiedendo l'elenco delle directory Cdell'unità al suo \. \è la cartella principale.

dir C:sta chiedendo l'elenco dell'indice di cui si è (o era ultima, se è stata modificata unità)

Se sei Csull'unità e digiti dire premi enter, otterrai lo stesso contenuto di dir C:. Se sei su un'unità diversa e digiti C:per tornare Call'unità, finirai nella directory che hai visto quando hai digitato dir C:.


0

Poiché questo non è StackOverflow, questo dovrebbe essere solo un commento, nella migliore delle ipotesi, ma non si adatta :.

.NET Framework (forse tramite Win32) riflette la directory corrente per l'unità corrente:

> (curdir)
C:\Utils\DotLisp\My Stuff
> (.FullName (DirectoryInfo. "C:"))
C:\Utils\DotLisp\My Stuff
> (.FullName (DirectoryInfo. "G:"))
G:\
> (set (curdir) "G:/Temp/Emails")
G:/Temp/Emails
> (curdir)
G:\Temp\Emails
> (.FullName (DirectoryInfo. "G:"))
G:\Temp\Emails
> (.FullName (DirectoryInfo. "C:"))
C:\

0

Stai eseguendo due comandi insieme. c:è esso stesso un comando per passare alla POSIZIONE PRECEDENTE sull'unità C :. Quindi manterrà la posizione prima di cambiare unità usando d:o e:. dirè un comando usato per elencare il contenuto di una directory.

Quindi sostanzialmente stai elencando il contenuto della tua cartella precedente sull'unità C: anche se sei su un'altra unità.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.