dir C: vs dir C: \


17

ฉันบังเอิญพบว่าถ้าฉัน:

dir C:\

ฉันได้รับรายชื่อไฟล์ที่เป็นลูกโดยตรงของไดรฟ์ C: ในราก

อย่างไรก็ตามถ้าฉัน:

dir C:

ฉันได้รับรายการไฟล์จำนวนมากที่ฉันไม่แน่ใจด้วยซ้ำว่าเป็นที่อยู่ (DLLs, EXEs, CPLs ฯลฯ )

คุณรู้หรือไม่ว่าเหตุใดสิ่งนี้จึงเกิดขึ้นและรายการนี้มาจากไหน


10
dir c:ส่งคืนรายการไฟล์ในไดเรกทอรีปัจจุบันของคุณ
pun

2
@ The_IT_Guy_You_D't_Like ยกเว้นว่าคุณอยู่ในไดรฟ์ที่แตกต่างกันซึ่งในกรณีนี้จินตนาการว่าแต่ละไดรฟ์มีไดเรกทอรีปัจจุบันดังนั้นหากคุณใช้ Q: \ มันจะแสดงไดเรกทอรีใดก็ตามที่คุณอยู่ใน C
barlop

3
@BrianDrummond Nope ผิด 100% ไดรฟ์ทุกตัวในเซสชัน Windows จะมีไดเรกทอรีทำงานแยกต่างหาก มันไม่มีชื่อไดเรกทอรีที่ใช้งานได้สำหรับไดรฟ์ทั้งหมด ลองมัน.
Andrew Medico

@AndrewMedico ฉันต้องขุดบางสิ่งบางอย่างกับ Windows เพื่อยืนยัน - บางทีฉันอาจจะจำได้ว่า DOS, LOL! ดังนั้นฉันจะรอคุณอยู่ ลบความคิดเห็นแล้ว
Brian Drummond

คำตอบ:


19

การระบุDIR locationจะแสดงเนื้อหาของตำแหน่ง

การระบุC:คำสั่งจำนวนมากรวมถึงDIRคำสั่งอ้างอิงถึงไดรฟ์ C และอ้างอิงถึงไดเรกทอรีปัจจุบัน หากต้องการดูไดเรกทอรีปัจจุบันของคุณให้พิมพ์สิ่งนี้:

c: 
cd

cdคำสั่งโดยปกติจะใช้กับการเปลี่ยนแปลงซึ่งไดเรกทอรีปัจจุบัน อย่างไรก็ตามใน MS-DOS (และระบบปฏิบัติการที่คล้ายคลึงกันรวมถึง Microsoft Windows รุ่นใหม่ แต่ไม่รวมถึง Unix) การทำงานcdด้วยตัวเองจะแสดงไดเรกทอรีปัจจุบันให้คุณ

ในความเป็นไปได้ทั้งหมดหากคุณไม่ได้ใช้cdคำสั่งดังนั้นไดเรกทอรีปัจจุบันของคุณอาจเป็นไดเรกทอรีที่ระบบปฏิบัติการของคุณติดตั้ง (อย่างน้อยนั่นคือพฤติกรรมทั่วไปสำหรับระบบ Microsoft Windows)

คุณสามารถทำได้:

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

ที่จะแสดงเนื้อหาของ C:\Program Files

ในทำนองเดียวกันคุณสามารถทำสิ่งที่ชอบ: copy C:*.*และเนื้อหาทั้งหมดจากไดเรกทอรีปัจจุบันจะถูกคัดลอก

เมื่อคุณระบุC:\เครื่องหมายแบ็กสแลชจะระบุไดเรกทอรี "รูท" หรือที่เรียกว่าไดเรกทอรี "ระดับสูงสุด" นั่นอาจเป็นหรือไม่ก็ได้เหมือนกับไดเรกทอรีปัจจุบันของคุณ

หากคุณเพิ่งระบุDIR \ไดรฟ์ปัจจุบันจะถูกสันนิษฐาน (คุณสามารถพิมพ์สิ่งที่ชอบC:หรือD:เป็นคำสั่งทั้งหมด (ในบรรทัดด้วยตัวเอง) เพื่อเปลี่ยนไดรฟ์ที่ถือว่าเป็น "ไดรฟ์ปัจจุบัน") หากคุณเพิ่งระบุDIRไดรฟ์ปัจจุบันและไดเรกทอรีปัจจุบันจะเป็น สันนิษฐาน


โอ้ใช่! มันทำให้รู้สึกทั้งหมด ขอบคุณมาก. ฉันคุ้นเคยกับยูนิกซ์เชลล์มากขึ้นซึ่งไม่มีพฤติกรรมแบบนี้ และใช่ฉันไม่ได้ใช้ "cd" ในเซสชันนั้นดังนั้นเนื้อหาที่แสดงจึงมาจาก "C: \ WINDOWS \ system32" ขอแสดงความนับถือมาก
Nuno

21

TL; DR - dir C:จะแสดงรายการไดเรกทอรีปัจจุบันเกี่ยวกับC:สิ่งที่จะเกิดขึ้นเมื่อเทียบกับdir C:\ซึ่งมักจะมีรายการรากของ\C:

เรื่องยาว ... ที่พรอมต์บรรทัดคำสั่งให้cmdจำไดเรกทอรีปัจจุบันของไดรฟ์แต่ละตัวที่เข้าถึงได้ในระหว่างเซสชัน

ไดเรกทอรีปัจจุบันบนไดรฟ์X:อื่นที่ไม่ใช่ไดเรกทอรีปัจจุบันสามารถตั้งค่าได้cd X:\etc(โดยไม่ต้องใช้/dสวิตช์ซึ่งจะเปลี่ยนไดรฟ์ปัจจุบันเป็นX:) และส่งคืนโดยcd X:(โดยไม่มี\) - ทั้งคู่ระบุไว้ในความcd /?ช่วยเหลือ:

พิมพ์ไดรฟ์ซีดี: เพื่อแสดงไดเรกทอรีปัจจุบันในไดรฟ์ที่ระบุ

ใช้สวิตช์ / D เพื่อเปลี่ยนไดรฟ์ปัจจุบันนอกเหนือจากการเปลี่ยนไดเรกทอรีปัจจุบันของไดรฟ์

ดูเหตุใดแต่ละไดรฟ์จึงมีไดเรกทอรีปัจจุบันของตนเอง สำหรับพื้นหลังรวมถึงคำพูดนี้

การจำไดเรกทอรีปัจจุบันของแต่ละไดรฟ์นั้นได้รับการเก็บรักษาไว้ตั้งแต่ [ nb DOS ] อย่างน้อยที่สุดสำหรับแบตช์ไฟล์แม้ว่าจะไม่มีแนวคิดเช่นนี้จริง ๆ เช่นไดเรกทอรีปัจจุบันต่อไดรฟ์ใน Win32 ใน Win32 สิ่งที่คุณมีคือไดเรกทอรีปัจจุบัน ลักษณะที่แต่ละไดรฟ์มีไดเรกทอรีปัจจุบันของตัวเองนั้นเป็นของปลอมโดย cmd.exe ซึ่งใช้ตัวแปรสภาพแวดล้อมแปลก ๆ เพื่อสร้างภาพลวงตาให้กับไฟล์แบตช์ที่แต่ละไดรฟ์มีไดเรกทอรีปัจจุบันของตัวเอง

การstrange environment variablesอ้างอิงถึงในโพสต์ที่เชื่อมโยงตัวแปร = ตัวแปรสภาพแวดล้อม = ตัวแปรสภาพแวดล้อมคืออะไร? สามารถเห็นได้set ""ที่พร้อมท์ cmd ตัวอย่างเช่น:

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: จะแสดงรายการไดเรคทอรี่ปัจจุบันใน C: - สำหรับรายละเอียดเพิ่มเติมหากคุณยังไม่ได้ตั้งค่าไดเรคทอรี่ปัจจุบันใน C: เลยสมมติว่ามันเป็นพาร์ติชั่นระบบของคุณ ลงทะเบียนและเป็นที่ผู้ใช้และรุ่นของหน้าต่างไดเรกทอรีปัจจุบันเริ่มต้นอย่างใดอย่างหนึ่งจะเป็นไดเรกทอรีบ้านของบริบทของผู้ใช้ปัจจุบัน ( c:\Users\<you>) หรือc:\windows\system32 c:\windows\tempอย่าสันนิษฐานว่าเป็นอย่างนี้แม้ว่าจะระบุไว้เสมอหรือเปลี่ยนไปใช้ไดเรกทอรีที่คุณต้องการดูแทนการใช้ค่าเริ่มต้นเฉพาะที่ใช้อย่างสม่ำเสมอ
David Spillett

5

เหตุผลที่คุณได้รับสองไดเรกทอรีที่แตกต่างกันนั้นง่าย ความ\แตกต่างคือ

dir C:\จะขอไดเรกทอรีรายชื่อของไดรฟ์ที่ดี C เป็นโฟลเดอร์รูท\\

dir C:กำลังขอรายการไดเรกทอรีที่คุณอยู่ (หรือล่าสุดถ้าคุณเปลี่ยนไดรฟ์)

ถ้าคุณอยู่ในCไดรฟ์และประเภทเพียงdirและตีคุณจะได้รับเนื้อหาเดียวกันของenter dir C:ถ้าคุณอยู่ในไดรฟ์ที่แตกต่างกันและพิมพ์C:จะเปลี่ยนกลับไปยังไดรฟ์แล้วคุณจะจบลงในไดเรกทอรีที่คุณเห็นเมื่อคุณพิมพ์Cdir C:


0

เนื่องจากนี่ไม่ใช่ StackOverflow สิ่งนี้ควรเป็นความคิดเห็นที่ดีที่สุด แต่ไม่เหมาะ:

Framework .NET ที่ (อาจจะผ่าน Win32) จะสะท้อนให้เห็นถึงไดเรกทอรีปัจจุบันสำหรับไดรฟ์ปัจจุบัน:

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

คุณกำลังรันสองคำสั่งพร้อมกัน c:เป็นคำสั่งสำหรับการเปลี่ยนเป็น LOCATION ก่อนหน้าบนไดรฟ์ C: จึงจะตั้งค้างไว้ก่อนที่คุณจะเปลี่ยนไดรฟ์ที่ใช้หรือd: เป็นคำสั่งที่ใช้แสดงรายการเนื้อหาของไดเรกทอรีe:dir

โดยพื้นฐานแล้วคุณกำลังแสดงรายการเนื้อหาของโฟลเดอร์ก่อนหน้าของคุณบนไดรฟ์ C: แม้ว่าคุณจะอยู่ในไดรฟ์อื่น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.