실수로 다음과 같은 사실을 발견했습니다.
dir C:\
루트에 C : 드라이브의 직접적인 자식 인 파일 목록을 얻습니다.
그러나 내가 할 경우 :
dir C:
나는 그들이 어디에 있는지 잘 모르는 거대한 파일 목록을 얻습니다 (DLL, EXE, CPL 등).
왜 이런 일이 발생하며이 목록의 출처는 무엇입니까?
실수로 다음과 같은 사실을 발견했습니다.
dir C:\
루트에 C : 드라이브의 직접적인 자식 인 파일 목록을 얻습니다.
그러나 내가 할 경우 :
dir C:
나는 그들이 어디에 있는지 잘 모르는 거대한 파일 목록을 얻습니다 (DLL, EXE, CPL 등).
왜 이런 일이 발생하며이 목록의 출처는 무엇입니까?
답변:
지정 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하면 현재 드라이브와 현재 디렉토리가 추정.
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
[...]
c:\Users\<you>) c:\windows\system32또는 c:\windows\temp입니다. 이 중 어느 것도 가정하지 마십시오. 항상 적용되는 특정 기본값에 의존하는 대신 항상보고자하는 디렉토리로 상태를 전환하거나 전환하십시오.
이것이 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:\
dir c:현재 디렉토리에있는 파일의 목록을 반환