私がやった場合、私は誤ってそれを見つけました:
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:
(なしで\
)返されます-両方とも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
[...]
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:
現在のディレクトリ内のファイルのリストを返します