dir C: vs dir C: \

17

Saya tidak sengaja menemukan bahwa jika saya melakukannya:

dir C:\

Saya mendapatkan daftar file yang merupakan anak-anak langsung dari drive C: di root.

Namun, jika saya lakukan:

dir C:

Saya mendapatkan daftar besar file yang saya bahkan tidak yakin di mana mereka berada (DLL, EXE, CPL, dll.).

Apakah Anda tahu mengapa ini terjadi dan dari mana daftar ini berasal?

Nuno
sumber
10
dir c:mengembalikan daftar file dalam direktori Anda saat ini
pun
2
@ The_IT_Guy_You_Don't_Like Kecuali jika Anda berada di drive yang berbeda, dalam hal ini bayangkan setiap drive memiliki direktori saat ini, jadi jika Anda berada di T: \ itu menunjukkan direktori apa pun "Anda berada" di C.
barlop
3
@BrianDrummond Tidak. 100% salah. Setiap drive dalam sesi Windows memiliki direktori kerja independennya sendiri per proses. Sama sekali tidak memiliki nama direktori yang berfungsi untuk semua drive. Cobalah.
Andrew Medico
@AndrewMedico saya harus menggali sesuatu dengan Windows untuk mengonfirmasi - mungkin saya ingat DOS, LOL! jadi saya akan tunduk kepada Anda. Komentar dihapus.
Brian Drummond

Jawaban:

19

Menentukan DIR locationakan menampilkan konten lokasi kepada Anda.

Menentukan C:banyak perintah, termasuk DIRperintah, merujuk ke drive C, dan merujuk ke direktori saat ini. Untuk melihat direktori Anda saat ini, ketik ini:

c: 
cd

The cdPerintah biasanya digunakan untuk mengubah yang direktori saat ini. Namun, dalam MS-DOS (dan sistem operasi serupa, termasuk Microsoft Windows modern, tetapi tidak termasuk Unix), berjalan cddengan sendirinya akan menampilkan direktori saat ini.

Kemungkinan besar, jika Anda belum menggunakan cdperintah, maka direktori Anda saat ini mungkin adalah direktori tempat sistem operasi Anda diinstal. (Setidaknya, itu perilaku umum untuk sistem Microsoft Windows.)

Kamu bisa melakukan ini:

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

Itu akan menunjukkan kepada Anda isi C:\Program Files

Demikian pula, Anda dapat melakukan sesuatu seperti: copy C:*.*dan semua konten dari direktori saat ini akan disalin.

Ketika Anda menentukan C:\, maka garis miring terbalik menunjukkan direktori "root", juga dikenal sebagai direktori "tingkat atas". Itu mungkin, atau mungkin tidak, sama dengan direktori Anda saat ini.

Jika Anda hanya menentukan DIR \, maka drive saat ini akan diasumsikan. (Anda dapat mengetik sesuatu seperti C:atau D:, sebagai keseluruhan perintah (pada satu baris dengan sendirinya), untuk mengubah drive mana yang dianggap sebagai "drive saat ini".) Jika Anda hanya menentukan DIR, maka drive saat ini dan direktori saat ini akan menjadi diasumsikan.

TOOGAM
sumber
Oh ya! Ini masuk akal. Terima kasih banyak. Saya jauh lebih akrab dengan shell unix, yang tidak memiliki perilaku seperti ini. Dan ya, saya tidak menggunakan "cd" di sesi itu, jadi konten yang ditampilkan berasal dari "C: \ WINDOWS \ system32". Salam yang sangat baik.
Nuno
21

TL; DR - dir C:akan mencantumkan direktori saat ini pada C:apa pun yang terjadi, sebagai kebalikan dari dir C:\yang akan selalu mencantumkan \root C:.

Ceritanya panjang ... Pada prompt baris perintah, cmdingat direktori saat ini untuk setiap drive yang diakses selama sesi.

Direktori saat ini pada drive X:selain yang saat ini dapat diatur dengan cd X:\etc(tanpa /dsaklar yang juga akan mengubah drive saat ini X:), dan dikembalikan oleh cd X:(tanpa a \) - keduanya tercantum dalam cd /?bantuan:

Ketik CD drive: untuk menampilkan direktori saat ini di drive yang ditentukan.

Gunakan tombol / D untuk mengubah drive saat ini sebagai tambahan untuk mengubah direktori saat ini untuk drive.

Lihat Mengapa setiap drive memiliki direktori saat ini? untuk latar belakang, termasuk kutipan ini.

Mengingat direktori saat ini untuk setiap drive telah disimpan sejak [ nb DOS ], setidaknya untuk file batch, meskipun sebenarnya tidak ada konsep seperti direktori saat ini per-drive di Win32. Di Win32, semua yang Anda miliki adalah direktori saat ini. Penampilan bahwa setiap drive memiliki direktori saat ini sendiri adalah palsu oleh cmd.exe, yang menggunakan variabel lingkungan aneh untuk membuat ilusi ke file batch yang setiap drive memiliki direktori saat ini sendiri.

Yang strange environment variablesdimaksud dalam pos tertaut Apa ini aneh = C: variabel lingkungan? dapat dilihat dengan set ""di cmd prompt, misalnya:

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
sumber
1
dir C: akan mendaftar direktori saat ini di C: - untuk detail tambahan, jika Anda belum menetapkan direktori saat ini di C: sama sekali maka anggap itu adalah partisi sistem Anda (yang memegang file Windows) dan tergantung pada bagaimana Anda berada login & sebagai pengguna & versi windows mana, direktori default saat ini akan menjadi direktori home dari konteks pengguna saat ini ( c:\Users\<you>), c:\windows\system32atau c:\windows\temp. Namun, jangan pernah menganggap semua ini: selalu nyatakan atau alihkan ke direktori yang ingin Anda lihat alih-alih mengandalkan standar tertentu yang diterapkan secara konsisten.
David Spillett
5

Alasan Anda mendapatkan dua direktori berbeda adalah sederhana. The \bedanya.

dir C:\meminta daftar direktori Cdrive di \. \adalah folder root.

dir C:meminta daftar direktori di mana Anda berada (atau yang terakhir, jika Anda mengganti drive)

Jika Anda berada di Cdrive dan cukup ketik dirdan tekan enter, Anda akan mendapatkan konten yang sama dir C:. Jika Anda berada di drive yang berbeda, dan ketik C:untuk kembali ke Cdrive, maka Anda akan berakhir di direktori yang Anda lihat ketika Anda mengetik dir C:.

Keltari
sumber
0

Karena ini bukan StackOverflow, ini seharusnya hanya komentar, paling banter, tetapi tidak cocok :.

NET Framework. (Mungkin via Win32) mencerminkan direktori saat ini untuk drive saat ini:

> (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
sumber
0

Anda menjalankan dua perintah bersamaan. c:itu sendiri perintah untuk mengubah ke LOKASI SEBELUMNYA pada drive C :. Jadi itu akan menahan lokasi sebelum Anda mengubah drive menggunakan d:atau e:. diradalah perintah yang digunakan untuk membuat daftar isi direktori.

Jadi pada dasarnya Anda mencantumkan konten folder sebelumnya di drive C: meskipun Anda berada di drive lain.

kaushikC
sumber