reż C: vs reż C: \

17

Przypadkowo odkryłem, że jeśli to zrobię:

dir C:\

Dostaję listę plików, które są bezpośrednimi dziećmi C: w katalogu głównym.

Jeśli jednak to zrobię:

dir C:

Otrzymuję ogromną listę plików, których nawet nie jestem pewien, gdzie one są (biblioteki DLL, EXE, CPL itp.).

Czy wiesz, dlaczego tak się dzieje i skąd pochodzi ta lista?

Nuno
źródło
10
dir c:zwraca listę plików w bieżącym katalogu
pun
2
@ The_IT_Guy_You_Don't_Like Chyba że jesteś na innym dysku, w takim przypadku wyobraź sobie, że każdy dysk ma bieżący katalog, więc jeśli jesteś na Q: \ pokazuje to dla dowolnego katalogu, w którym się znajdujesz na C.
barlop
3
@BrianDrummond Nope. 100% źle. Każdy dysk w sesji Windows ma swój niezależny katalog roboczy na proces. Absolutnie nie ma jednej nazwy katalogu roboczego dla wszystkich dysków. Spróbuj.
Andrew Medico,
@AndrewMedico Muszę wykopać coś z Windows, żeby potwierdzić - może pamiętam DOS, LOL! więc poddam się tobie. Komentarz usunięty.
Brian Drummond,

Odpowiedzi:

19

Określenie DIR locationpokaże zawartość lokalizacji.

Określanie C:wielu poleceń, w tym DIRpolecenia, odnosi się do dysku C i odnosi się do bieżącego katalogu. Aby zobaczyć swój bieżący katalog, wpisz:

c: 
cd

cdPolecenie jest zazwyczaj używany do zmiany który katalog jest aktualny. Jednak w MS-DOS (i podobnych systemach operacyjnych, w tym w nowoczesnym systemie Microsoft Windows, ale bez Unixa), cdsamodzielne uruchomienie wyświetli bieżący katalog.

cdNajprawdopodobniej jeśli nie korzystałeś z tej komendy, to twój bieżący katalog jest prawdopodobnie katalogiem, w którym system operacyjny został zainstalowany. (Przynajmniej takie zachowanie występuje w systemach Microsoft Windows).

Możesz to zrobić:

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

To pokaże ci zawartość C:\Program Files

Podobnie możesz zrobić coś takiego: copy C:*.*i cała zawartość z bieżącego katalogu zostanie skopiowana.

Po określeniu C:\ukośnik odwrotny wskazuje katalog „root”, znany również jako katalog „najwyższego poziomu”. To może być, lub nie, to samo co twój bieżący katalog.

Jeśli tylko określisz DIR \, bieżący dysk zostanie przyjęty. (Możesz wpisać coś w stylu C:lub D:, jako całe polecenie (w wierszu), aby zmienić dysk uważany za „bieżący dysk”.) Jeśli tylko określisz DIR, bieżący dysk i bieżący katalog będą przybrany.

TOOGAM
źródło
O tak! To sprawia, że cały sens. Dziękuję Ci bardzo. O wiele lepiej znam powłokę unix, która nie ma tego rodzaju zachowania. I tak, nie użyłem „cd” w tej sesji, więc pokazywana zawartość pochodziła z „C: \ WINDOWS \ system32”. Bardzo poważaniem.
Nuno,
21

TL; DR - dir C:wyświetli bieżący katalog na C:czymkolwiek, co się dzieje, w przeciwieństwie do tego, dir C:\który zawsze będzie zawierał \katalog główny C:.

Długa historia ... W linii poleceń, cmdzapamiętuje aktualny katalog dla każdego dysku to dostęp w czasie sesji.

Bieżący katalog na dysku X:innego niż obecnie można ustawić cd X:\etc(bez /dprzełącznika, który będzie również zmienić bieżący dysk do X:) i jest zwracany przez cd X:(bez \) - zarówno zauważono w cd /?pomocy:

Wpisz napęd CD: aby wyświetlić bieżący katalog w określonym napędzie.

Użyj przełącznika / D, aby zmienić bieżący dysk oprócz zmiany bieżącego katalogu dla dysku.

Zobacz Dlaczego każdy dysk ma własny katalog bieżący? w tle, w tym ten cytat.

Zapamiętywanie bieżącego katalogu dla każdego dysku jest zachowane od czasu [ nb DOS ], przynajmniej dla plików wsadowych, chociaż tak naprawdę nie ma takiej koncepcji jak katalog bieżący dla jednego napędu w Win32. W Win32 wszystko, co masz, to bieżący katalog. Wygląd, że każdy dysk ma swój własny katalog bieżący, jest fałszywy przez cmd.exe, który wykorzystuje dziwne zmienne środowiskowe, aby stworzyć iluzję wsadowych plików, że każdy dysk ma swój własny katalog bieżący.

strange environment variables, O których mowa w połączonej postu Co oznaczają te dziwne = c: zmienne środowiskowe? można dostrzec set ""w CMD polecenia, na przykład:

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
[...]
dxiv
źródło
1
katalog C: wyświetli bieżący katalog na C: - dla dodatkowych szczegółów, jeśli w ogóle nie ustawiłeś bieżącego katalogu na C: to zakładając, że jest to twoja partycja systemowa (ta, w której przechowywane są pliki systemu Windows) i zależnie od tego, jak się masz rejestrowane i jako który użytkownik i która wersja systemu Windows, domyślny katalog bieżący albo będzie katalog domowy bieżącego kontekstu użytkownika ( c:\Users\<you>), c:\windows\system32lub c:\windows\temp. Nigdy nie ponoszą żadnej tego jednak: zawsze stanie lub przejdź do katalogu, który chcesz patrzeć zamiast opierania się na danym domyślnie są konsekwentnie stosowane.
David Spillett,
5

Powodem są coraz dwóch różnych katalogów jest proste. To \jest różnica.

dir C:\prosi o katalogu listą z Cnapędem na ITS \. \jest folderem głównym.

dir C:prosi o katalogu Notowania gdzie (lub ostatnio, jeśli zmienił dyski)

Jeśli jesteś na Cdysku i po prostu wpisz diri naciśnij enter, otrzymasz tę samą zawartość dir C:. Jeśli jesteś na innym dysku i wpiszesz, C:aby wrócić do niego C, to skończysz w katalogu, który widziałeś podczas pisania dir C:.

Keltari
źródło
0

Ponieważ nie jest to StackOverflow, w najlepszym razie powinien to być tylko komentarz, ale nie pasuje :.

.NET Framework (być może poprzez Win32) odzwierciedla bieżący katalog dla bieżącego dysku:

> (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:\
Mark Hurd
źródło
0

Używasz dwóch poleceń razem. c:to samo polecenie zmiany na POPRZEDNĄ LOKALIZACJĘ na dysku C:. Więc utrzyma lokalizację przed zmianą dysków za pomocą d:lub e:. dirto polecenie używane do wyświetlania zawartości katalogu.

Zasadniczo wyświetlasz zawartość poprzedniego folderu na dysku C: nawet jeśli znajdujesz się na innym dysku.

kaushikC
źródło