• ベストアンサー

コマンドプロンプトの表示について(Dir)

Dirコマンドについて質問があります。 コマンドプロンプトで「Dir」と入力するとカレントディレクトリの一覧が表示されますが、この際にカレントディレクトリ内にあるフォルダやファイル名以外に <DIR> . <DIR> .. と2行表示されるのですが、これはどのような意味ですか? ピリオド1つの方は「カレントディレクトリ」を表し、ピリオド2つの方は「カレントディレクトリの1つ上のディレクトリ」を表すらしいのですが、「Dir」と入力してカレントディレクトリの一覧を表すのはフォルダ名とファイル名だけだと思うのですが。。。 ちなみに Dir D:\ABC などのように他のディレクトリのリストを表示させると、フォルダ名とファイル名の他は <DIR> . のようにピリオド1つの行のみが表示されます(ピリオド2つの行は表示されない)。  <DIR> . <DIR> .. のように2行表示されたり、1行のみだったり、違いを教えてほしいです。また、なぜこの2行が表示されるのか、分かりません。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • luka3
  • ベストアンサー率72% (424/583)
回答No.4

>コマンドプロンプトの画面です。例として なるほど。 Windows11で、ルートにあるフォルダに限り .. が表示されないような感じです。 Windows10では .. が表示されます。 この原因をいろいろ探ってみましたが、私個人の結論としては、『Windows11ではルートディレクトリにシステム属性が設定されているため、ルート直下のフォルダでdirコマンドを実行した場合、ルートを指し示す .. は非表示になる(非表示になるだけで、.. のフォルダは存在する)』です。 添付画像にある通り、システム属性でフィルタすると、ルートにあたる .. がWindows11でのみヒットします。 ルート以外であれば、attribコマンドでシステム属性や隠し属性を付与・削除することで、同様に . や .. が非表示になることを再現できるでしょう。 ルートに限っては、属性を保持するものがないので変更できないはずなのですが、Windows11で何かしらの変更が加えられたのかもしれません。 他の回答に一部解釈違いがあるので補足しますが .  そのフォルダ自身を指し示すフォルダ .. そのフォルダがある親フォルダを指し示すフォルダ です。 ルート以外の全てのサブフォルダに存在するが、dir /s などでこれが厳密に処理されると無限ループになるので通常は無視され、コマンドで . または .. を指示した場合のみ機能する、ということかと。

kurubun
質問者

お礼

色々と調べて頂いたようで、どうもありがとうございます。Windows10と11で少々違いがあるみたいですね。 恥ずかしながらコマンドプロンプトを今さら少し勉強していていまして分からないところが多いです。。。

その他の回答 (3)

  • kteds
  • ベストアンサー率42% (1882/4440)
回答No.3

> ピリオド1つの方は「カレントディレクトリ」を表し、・・・ これは違います。 「カレントディレクトリの1つ上のディレクトリ」の上にさらに「1つ上のディレクトリ」があります、ということを表しています。 添付画像の場合は カレントディレクトリはC:\testです。 C:\test>dir back とはカレントディレクトリの「1つ下にある」backディレクトリを指定しています。 したがって C:\test\backディレクトリの内容が表示されています。 <DIR> .. とは C:\test\backディレクトリの1つ上には「ディレクトリがあります」(つまり、C:\testがあります)ということを意味しています。 <DIR> . とは C:\test\backディレクトリの1つ上の「さらに1つ上」には「ディレクトリがあります」(つまり、C:\があります)ということを意味しています。

kurubun
質問者

お礼

どうもありがとうございます。勉強になります。

  • SI299792
  • ベストアンサー率47% (772/1616)
回答No.2

Dir . カレントディレクトリとは、自分自身の事です 例えば、画像の場合 C:\Users\MA のディレクトリが表示されます。 Dir だけ入力しても同じです。なので何の為にあるのか不明な機能です。 Dir .. 1つ上のディレクトリです C:\Users のディレクトリが表示されます。 ちなみに Dir C:\Users\MA\.. の様な指定もできます。(コマンドプロンプトで使うには無駄ですが) . ..(赤□)は Dir \ の様にで1番上を指定した時は出てきません。 その上はありませんから。

kurubun
質問者

お礼

どうもありがとうございます。勉強になります。

  • luka3
  • ベストアンサー率72% (424/583)
回答No.1

OSとしてはunixが先なので、そちらで調べてみたら https://ja.stackoverflow.com/questions/41558/ls-a-%E3%81%AF%E3%81%AA%E3%81%9C-%E3%82%84-%E3%82%92%E8%A1%A8%E7%A4%BA%E3%81%99%E3%82%8B%E3%82%93%E3%81%A7%E3%81%97%E3%82%87%E3%81%86 . も .. も実際に存在するハードリンク、ということです。 この仕組みがあるおかげで、..\ABC と相対形式で記述できることになり、この仕組みがないと(下層以外の)すべてのファイルはルートからのフルパスで記述しないとならない、ということでしょう。 .. については親フォルダの場所(FATでいうとディレクトリエントリのあるクラスタ番号)を示すためのものだろうとなんとなく予想してましたが、.についても同じようになっていたとは知りませんでした。 >ピリオド1つの行のみが表示され この表示は見たことないので、差し支えなければどこで確認できるか教えていただければと思います。

kurubun
質問者

補足

luka3さん 回答ありがとうございます。 >この表示は見たことないので、差し支えなければどこで確認できるか教えていただければと思います。 コマンドプロンプトの画面です。例として https://www.javadrive.jp/command/file/index1.html に表示されている、コマンドプロンプトの画面では、 ピリオドが1つだったり、2つだったり、無かったりしています。。。

関連するQ&A