dir C : vs dir C : \


17

실수로 다음과 같은 사실을 발견했습니다.

dir C:\

루트에 C : 드라이브의 직접적인 자식 인 파일 목록을 얻습니다.

그러나 내가 할 경우 :

dir C:

나는 그들이 어디에 있는지 잘 모르는 거대한 파일 목록을 얻습니다 (DLL, EXE, CPL 등).

왜 이런 일이 발생하며이 목록의 출처는 무엇입니까?


10
dir c:현재 디렉토리에있는 파일의 목록을 반환
말장난

2
@ The_IT_Guy_You_Don't_Like 다른 드라이브에 있지 않으면 각 드라이브에 현재 디렉토리가 있다고 가정합니다. 따라서 Q : \에 있으면 C의 "현재있는"디렉토리에 대해 표시됩니다.
barlop

3
@BrianDrummond Nope. 100 % 잘못되었습니다. Windows 세션의 모든 드라이브에는 프로세스마다 고유 한 독립적 인 작업 디렉토리가 있습니다. 모든 드라이브에 대해 단일 작업 디렉토리 이름을 갖는 것은 아닙니다. 시도 해봐.
앤드류 메디 코

@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:(A없이 \) - 모두에 언급 cd /?도움 :

CD drive :를 입력하여 지정된 드라이브의 현재 디렉토리를 표시하십시오.

/ D 스위치를 사용하여 드라이브의 현재 디렉토리 를 변경하고 현재 드라이브 변경하십시오.

각 드라이브에 고유 한 현재 디렉토리가있는 이유를 참조하십시오 . 이 인용문을 포함하여 배경.

Win32에는 실제로 드라이브 별 현재 디렉토리와 같은 개념은 없지만 각 배치에 대한 현재 디렉토리 는 적어도 배치 파일에 대해 [ nb DOS ] 이후로 유지되었습니다 . Win32에서는 현재 디렉토리 만 있으면됩니다. 각 드라이브에 고유 한 현재 디렉토리가있는 모양은 이상한 환경 변수를 사용하여 각 드라이브에 고유 한 현재 디렉토리가있는 배치 파일에 대한 환상을 만드는 cmd.exe에 의해 가짜입니다.

strange environment variables링크 된 게시물에 언급 된 환경 변수 : 이상한 = C은 무엇입니까? 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 :에 현재 디렉토리를 설정하지 않은 경우, 시스템 파티션 (Windows 파일을 보유한 디렉토리)이라고 가정하고 현재 상태에 따라 어떤 사용자 및 어떤 Windows 버전으로 기록되는지, 기본 현재 디렉토리는 현재 사용자 컨텍스트의 홈 디렉토리 ( c:\Users\<you>) c:\windows\system32또는 c:\windows\temp입니다. 이 중 어느 것도 가정하지 마십시오. 항상 적용되는 특정 기본값에 의존하는 대신 항상보고자하는 디렉토리로 상태를 전환하거나 전환하십시오.
David Spillett

5

두 개의 다른 디렉토리를 얻는 이유는 간단합니다. 는 \차이이다.

dir C:\에서 C드라이브 의 디렉토리 목록을 요청 하고 \있습니다. \루트 폴더입니다.

dir C:이 곳의 디렉토리 목록에 대한 요구하고 있다 (당신이 드라이브를 변경 한 경우 또는 것은, 마지막)

당신이에 경우 C드라이브와 단지 형 dir과 히트 enter, 당신은 동일한 내용을 얻을 것이다 dir C:. 다른 드라이브 C:를 사용 중이고 입력 하여 C드라이브로 다시 변경 하면 입력 할 때 본 디렉토리가 나타납니다 dir C:.


0

이것이 StackOverflow가 아니기 때문에, 이것은 단지 주석 일뿐이지만 맞지 않습니다.

.NET Framework (아마 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:자체는 C : 드라이브에서 PREVIOUS LOCATION으로 변경하기위한 명령입니다. 이 위치를 잡아 것입니다 그래서 당신은 사용하여 드라이브를 변경하기 전에 d:e:. dir디렉토리의 내용을 나열하는 데 사용되는 명령입니다.

따라서 기본적으로 다른 드라이브에 있더라도 C : 드라이브에 이전 폴더의 내용을 나열합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.