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いや。100%間違っています。Windowsセッションのすべてのドライブには、プロセスごとに独自の独立した作業ディレクトリがあります。すべてのドライブに対して単一の作業ディレクトリ名は絶対にありません。それを試してみてください。
アンドリューメディコ

@AndrewMedico確認するためにWindowsで何かを掘り出さなければならない-DOS、LOLを覚えているかもしれません!だから私はあなたにまかせます。コメントを削除しました。
ブライアンドラモンド

回答:


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、現在のドライブと現在のディレクトリは想定。


そうそう!これはすべて理にかなっています。どうもありがとうございました。私は、この種の振る舞いを持たないunixシェルに精通しています。そして、はい、そのセッションでは「cd」を使用しなかったため、表示されているコンテンツは「C:\ WINDOWS \ system32」からのものでした。よろしくお願いします。
ヌーノ

21

TL; DRは - dir C:上で、現在のディレクトリ一覧表示されますC:それはとは反対に、あることを起こるものは何でもdir C:\常にリストれる\のルートをC:

長い話...コマンドラインプロンプトでcmd、セッション中にアクセスした各ドライブの現在のディレクトリを記憶します。

現在のドライブX:以外のドライブの現在のディレクトリはcd X:\etc/d現在のドライブをに変更するスイッチなしで)設定できX:cd X:(なしで\)返されます-両方ともcd /?ヘルプに記載されています:

CDドライブを入力:指定したドライブの現在のディレクトリを表示します。

/ 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のファイルを保持するパーティション)であり、現在の状態に応じてデフォルトの現在のディレクトリは、現在のユーザーコンテキストのホームディレクトリ(c:\Users\<you>c:\windows\system32またはc:\windows\temp。ただし、これを想定しないでください。常に特定のデフォルトが一貫して適用されることに依存するのではなく、見たいディレクトリを常に指定または切り替える。
デビッドスピレット

5

2つの異なるディレクトリを取得する理由は簡単です。\違いです。

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

2つのコマンドを一緒に実行しています。c:それ自体は、C:ドライブの前の場所に変更するためのコマンドです。そのため、d:またはを使用してドライブを変更する前に場所を保持しますe:dirディレクトリの内容をリストするために使用されるコマンドです。

したがって、基本的には、別のドライブを使用している場合でも、C:ドライブの以前のフォルダーのコンテンツをリストしています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.