web-dev-qa-db-ja.com

cmdにはワイルドカードのバグがありますか?

フォルダ内のファイル:

a.j
ab.jp
abc.jpg
abcd.jpeg

dirコマンドの結果:

Command       Result (Files shown)
----------    --------------------
dir ?.*       a.j
dir ??.*      a.j, ab.jp
dir ???.*     a.j, ab.jp, abc.jpg
dir ????.*    a.j, ab.jp, abc.jpg, abcd.jpeg

したがって、単一の?が表示されます。これは「0または1文字」を意味します。

dirコマンドの結果が増えました:

Command       Result (Files shown)
----------    --------------------
dir *.?       a.j
dir *.??      a.j, ab.jp
dir *.???     a.j, ab.jp, abc.jpg, abcd.jpeg --> What is this?!
dir *.????    a.j, ab.jp, abc.jpg, abcd.jpeg

3番目のコマンドで、なぜ???jpegを表示しているのですか?説明できますか?このバグはcmdにありますか?

3

これは、3つの疑問符がファイル名の短いバージョンの拡張子と一致するために発生します。使用する

dir /x

ファイル名の短いバージョンを表示(および操​​作)します。

7
boot13

3文字を超える拡張子の問題について:これは、短いファイル名の作成方法が原因です。レジストリで Win95TruncatedExtensions を設定することで、これを解決できます。

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem]
"Win95TruncatedExtensions"=dword:00000000

NTFSおよびFATが8.3命名規則に従って新しいファイルのファイル名を生成するかどうかを指定します。

このエントリの値を1に設定しても、既存のファイル名拡張子は変更されません。また、これらの拡張子が検索、ファイルマネージャー、またはWindowsエクスプローラーによって表示または管理される方法も変更されません。ただし、NTFSとFATは新しいファイルの短い名前を生成し、ファイル名拡張子の3番目の文字を切り捨てます。

デフォルト値は1です

enter image description here

ただし、これは新しく作成またはコピーされたファイルにのみ影響することに注意してください。

(ハードディスク上のすべてのファイルをコピーする場合があります。このレジストリ設定は、Windowsシステムをインストールするときの最初のアクションの1つとして実行する必要があります。)

2
Konrad

コマンドプロンプトは、短いファイル名システムを使用します。つまり、ファイルのポイントの前に8文字を超える場合、最初の6文字が+ 〜1​​で使用されます。の後ろに4文字以上を使用する場合も同様です。次に、拡張子の最初の3文字を使用し、ファイルに別の名前を付けます(最初の6 + 〜1)。したがって、.jpegファイルはコマンドプロンプトに??????~1.jpeとして表示され、*.???と一致します。

dir /xを使用して、ファイル名が短いファイルを表示します。

1
LPChip