奇妙なWindowsDIRコマンドの動作

18
dgo 2012-06-20 08:25.

名前に数字が含まれているファイルを探しているときに、これを偶然に発見しました。私がタイプするとき:

dir **

(ここで、numberは0から9までの任意の数値を表し、アスタリスクと数値の間にスペースはありません)

cmd.exeコマンドプロンプトで、検索条件に合うように表示されないさまざまなファイルが返されます。奇妙なことに、ディレクトリによっては、機能する番号と機能しない番号があります。例として、Webサイトに関連付けられたディレクトリに、次のように入力します。

dir *4*

返されるのは次のとおりです。

C:\ Ampps \ www \ include \ pagesのディレクトリ 

04/30/2012 03:55 PM 153 Inventory_list_retrieve.php
2012年6月18日11:17 AM 6,756 ix.html
06/19/2012 01:47 PM 257,501 jquery.1.7.1.js
               3ファイル264,410バイト
               0 Dir(s)362,280,906,752バイト空き

それは私にはまったく意味がありません。どんな手掛かり?

バッチプログラムではDIRコマンドがFORと組み合わされることが多いため、stackOverflowで問題が提起されます。奇妙なDIR動作は、バッチプログラムがDIRコマンドを使用する場合、潜在的に信頼性が低くなるように思われます。

編集:(追記)。かなりの時間が経ちましたが、これには別の癖があり、ほとんど手間がかかりました。.htm特定のディレクトリツリー内のすべてのファイルを削除したかったのです。それをする直前に、ファイルにも*.htm一致.htmlすることに気づきました。また、*.man一致し.manifest、おそらく他にもあります。.htmlその特定のディレクトリ内のすべてのファイルを削除すると、控えめに言っても動揺していたでしょう。

4 answers

17
RBerteig 2012-06-20 09:08.

コマンドプロンプトのワイルドカードは、長いファイル名と短い「8.3」名(存在する場合)の両方と照合されます。これは驚きを生み出す可能性があります。

短い名前を表示する/Xには、DIRコマンドのオプションを使用します。

この動作はDIRコマンドに固有のものではなく、ワイルドカードがDEL。などのコマンドで予想以上に一致すると、他の(多くの場合不快な)驚きにつながる可能性があることに注意してください。

* nixシェルとは異なり、ファイルパターンの一致する名前のリストへの置き換えは、各コマンド内で実装され、シェル自体では実装されません。これは、異なるコマンドが異なるワイルドカードパターンルールを実装できることを意味する場合がありますが、実際には、Windowsがパターンに一致するファイルをディレクトリで検索するAPI呼び出しを提供し、ほとんどのプログラムがそれらの呼び出しを明白な方法で使用するため、これは非常にまれです。「通常の」ツールを使用してCまたはC ++で記述されたプログラムの場合、その拡張は、WindowsAPIを使用してCランタイムライブラリによって「無料」で提供されます。

問題のWindowsのAPIがありFindFirstFile()、その近親者FindFirstFileEx()FindNextFile()FindClose()

奇妙なことに、のドキュメントでFindFirstFile()は、lpFileNameパラメータを「ディレクトリまたはパス、およびワイルドカード文字(アスタリスク(*)や疑問符()など)を含めることができるファイル名」と説明していますが、?実際には*?文字の意味を定義していません。。

ファイルパターンの正確な意味は、1970年代初頭にさかのぼるCP / Mオペレーティングシステムの歴史があり、MSDOSの設計に強い影響を与えました(ここでは「影響を受けた」の代わりに「直接コピーされた」と言う人もいます)。これにより、多くの「興味深い」アーティファクトと動作が発生しました。スペクトルのDOS側でのこの一部は、2007年のこのブログ投稿で説明されています。Raymondでは、ファイルパターンがDOSでどのように実装されたかを正確に説明しています。

14
npocmaka 2012-06-20 09:00.

うん。これを試してみると、短い名前も検索されることがわかります。

dir /x *4*

(/ xスイッチは短い名前用です)

ファイル名のフィルタリングには以下を使用します。

dir /b | find "4"
5
dbenham 2012-06-20 09:34.

RBerteigの回答からの引用:

この動作はDIRコマンドに固有のものではなく、ワイルドカードがDELなどのコマンドで予想以上に一致すると、他の(多くの場合不快な)驚きにつながる可能性があることに注意してください。

上記は、非常に厄介なFORコマンドにも当てはまります。

for %A in (*4*) do @echo %A contains a 4

短い名前も検索します。解決策は、FINDまたはFINDSTRを使用して、より信頼性の高い方法で名前を除外することです。

for %A in (*) do @echo %A | >nul findstr 4 && echo %A contains a 4

注-バッチファイル内でコマンドを使用する場合は、%Aを%% Aに変更してください。

FORとFINDSTRを組み合わせることは、短いファイル名で問題が発生したコマンドを安全に使用するための汎用的な方法です。ECHOをCOPYやDELなどの問題のあるコマンドに置き換えるだけです。

4
Helbreder 2012-06-20 09:08.

dirコマンドは内部で短い(8.3マナー)ファイル名も検索するようです。

私がdir *1*これを呼ぶとき、これは私が得るものです:

 Volume in drive C is System
 Volume Serial Number is F061-0B78

 Directory of C:\Users\Piotrek\Desktop\Downloads
2012-05-20  17:33        23 639 040 gDEBugger-5_8.msi
2012-05-20  17:30           761 942 glew-1.7.0.zip
2012-05-20  17:11         9 330 176 irfanview_plugins_433_setup.exe
2012-05-24  20:17         4 419 192 SumatraPDF-2.1.1-install.exe
2012-05-15  22:55         3 466 248 TrueCrypt Setup 7.1a.exe
               5 File(s)  1 127 302 494 bytes

gDEBugger-5_8.msiリストされているファイルの中にファイルがありますが、明らかに1文字が含まれていません。

/Xdirコマンドでswitchを使用すると、すべてが明らかになります。これにより、dirは8.3ファイル名を使用します。dir /X *1*コマンドからの出力:

 Volume in drive C is System
 Volume Serial Number is F061-0B78

 Directory of C:\Users\Piotrek\Desktop\Downloads


2012-05-20  17:33        23 639 040 GDEBUG~1.MSI gDEBugger-5_8.msi
2012-05-20  17:30           761 942 GLEW-1~1.ZIP glew-1.7.0.zip
2012-05-20  17:11         9 330 176 IRFANV~1.EXE irfanview_plugins_433_setup.exe
2012-05-24  20:17         4 419 192 SUMATR~1.EXE SumatraPDF-2.1.1-install.exe
2012-05-15  22:55         3 466 248 TRUECR~1.EXE TrueCrypt Setup 7.1a.exe
               5 File(s)  1 127 302 494 bytes

dirの助けからの引用:

/X          This displays the short names generated for non-8dot3 file
            names.  The format is that of /N with the short name inserted
            before the long name. If no short name is present, blanks are
            displayed in its place.

Related questions

MORE COOL STUFF

ケイト・ブランシェットは3日間一緒に夫と一緒に寝て、25年経ってもまだ夫と結婚しています

ケイト・ブランシェットは3日間一緒に夫と一緒に寝て、25年経ってもまだ夫と結婚しています

ケイト・ブランシェットは、夫に会ったとき、典型的な交際のアドバイスに逆らいました。

マイケルシーンが非営利の俳優である理由

マイケルシーンが非営利の俳優である理由

マイケルシーンは非営利の俳優ですが、それは正確にはどういう意味ですか?

ホールマークスターのコリンエッグレスフィールドがRomaDramaLiveでスリル満点のファンと出会う![エクスクルーシブ]

ホールマークスターのコリンエッグレスフィールドがRomaDramaLiveでスリル満点のファンと出会う![エクスクルーシブ]

特徴的なスターのコリン・エッグレスフィールドは、RomaDrama Liveでのスリル満点のファンとの出会いについて料理しました!加えて、大会での彼のINSPIREプログラム。

「たどりつけば」をオンラインでストリーミングできない理由

「たどりつけば」をオンラインでストリーミングできない理由

ノーザンエクスポージャーが90年代の最も人気のある番組の1つになった理由を確認するには、Blu-rayまたはDVDプレーヤーをほこりで払う必要があります。

バイオニック読書はあなたをより速く読むことができますか?

バイオニック読書はあなたをより速く読むことができますか?

BionicReadingアプリの人気が爆発的に高まっています。しかし、それは本当にあなたを速読術にすることができますか?

ドミニカのボイリング湖:アクセスは簡単ではありませんが、ハイキングする価値があります

ドミニカのボイリング湖:アクセスは簡単ではありませんが、ハイキングする価値があります

ドミニカのボイリング湖は、世界で2番目に大きいボイリング湖です。そこにたどり着くまでのトレッキングは大変で長いですが、努力する価値は十分にあります。

私たちの水をきれいに保つのを助けるためにあなたの髪を寄付してください

私たちの水をきれいに保つのを助けるためにあなたの髪を寄付してください

サロンからのヘアトリミングや個人的な寄付は、油流出を吸収して環境を保護するのに役立つマットとして再利用できます。

ホワイトハウスの最も記憶に残る結婚式を見てください

ホワイトハウスの最も記憶に残る結婚式を見てください

過去200年以上の間にホワイトハウスで結婚したのはほんの数人です。彼らは誰でしたか、そしてそこで結婚式を獲得するために何が必要ですか?

驚くほど素晴らしいDropMixミュージックミキシングカードゲームは30ドルで驚くべき取引です

驚くほど素晴らしいDropMixミュージックミキシングカードゲームは30ドルで驚くべき取引です

DropMixはNFC対応のカードゲームで、基本的にはリミックスアーティストになります。現在、Amazonでは$ 30まで下がっており、これまでで最高の価格に匹敵します。ロックバンドで有名なHarmonixによって開発されたDropMixは、おそらく少し野心的すぎるように思われます。結局のところ、ほとんどの人は素晴らしいリズムを持っていませんが、ゲームは驚くほどうまく実行されます。

メアリーJ.ブライジがついにハリウッドウォークオブフェイムスターを獲得

メアリーJ.ブライジがついにハリウッドウォークオブフェイムスターを獲得

写真:APメアリーJ.ブライジは、間もなくハリウッドウォークオブフェイムのスターを獲得します。これは、メアリーJよりもハリウッドウォークオブフェイムのほうが正直なところ恩恵です。

MeltdownとSpectreの脆弱性についてこれまでに知っていることはすべて、簡単な方法で説明されています

MeltdownとSpectreの脆弱性についてこれまでに知っていることはすべて、簡単な方法で説明されています

画像:グラズ工科大学/ NataschaEiblがデザインしたロゴ。MeltdownとSpectreは、攻撃者がシステムメモリに保存されているあらゆる種類の情報にアクセスできるようにする2つの脆弱性に付けられた名前です。

彼のニューヨークの家から追い出されようとしている97歳の第二次世界大戦の獣医。メリーエフィングクリスマス

彼のニューヨークの家から追い出されようとしている97歳の第二次世界大戦の獣医。メリーエフィングクリスマス

日本人に襲われたときに真珠湾にいた97歳の第二次世界大戦のベテランが、ニューヨークのブルックリンから追い出されています。

Zendaya Wishes Boyfriend Tom Holland Happy Birthday with Cuddly Photo: He 'Makes Me the Happiest'

Zendaya Wishes Boyfriend Tom Holland Happy Birthday with Cuddly Photo: He 'Makes Me the Happiest'

Zendaya shared a sweet photo in honor of boyfriend Tom Holland's 26th birthday Wednesday

小さな女性:脳卒中を患った後に病院から解放されたアトランタのジューシーな赤ちゃん:「まだ癒し」

小さな女性:脳卒中を患った後に病院から解放されたアトランタのジューシーな赤ちゃん:「まだ癒し」

シーレン「Ms.JuicyBaby」ピアソンは、先月脳卒中で入院した後、「もう一度たくさんのことをする方法を学ばなければならない」ため、言語療法を受けていることを明らかにしました。

エマストーンは彼女のクリフサイドマリブビーチハウスを420万ドルでリストアップしています—中を見てください!

エマストーンは彼女のクリフサイドマリブビーチハウスを420万ドルでリストアップしています—中を見てください!

オスカー受賞者の世紀半ばの家には、3つのベッドルーム、2つのバス、オーシャンフロントの景色があります。

ジーニー・メイ・ジェンキンスは、母乳育児の経験の中で、彼女は「本当に、本当に落ち込んでいる」と言います

ジーニー・メイ・ジェンキンスは、母乳育児の経験の中で、彼女は「本当に、本当に落ち込んでいる」と言います

ジーニー・メイ・ジェンキンスは、生後4か月の娘、モナコに母乳育児をしていると語った。

投資ノート:Bioscout AU$300万シード

投資ノート:Bioscout AU$300万シード

Bioscoutは、農家を運転席に置くという使命を負っています。Artesian(GrainInnovate)やUniseedと並んで、最新のシードラウンドでチームを支援できることをうれしく思います。問題真菌症による重大な作物の損失は、農民にとって試練であることが証明されています。

リトルマーケットリサーチ1| 2022年のクイックグリンプス遠隔医療市場

リトルマーケットリサーチ1| 2022年のクイックグリンプス遠隔医療市場

遠隔医療は、パンデミック後の時代では新しいものではなく、時代遅れの分野でもありません。しかし、業界を詳しく見ると、需要と供給の強力な持続可能性と、米国で絶え間ない革命となる強力な潜在的成長曲線を示しています。

スタートアップ資金調達環境:タイのスタートアップエコシステムの次は何ですか?

スタートアップ資金調達環境:タイのスタートアップエコシステムの次は何ですか?

2021年は、世界的なベンチャーキャピタル(VC)の資金調達にとって記録的な年でした。DealStreetAsiaによると、東南アジアも例外ではなく、この地域では年間で記録的な25の新しいユニコーンが採掘されました。

ムーアの法則を超えて

ムーアの法則を超えて

計算に対する私たちの欲求とムーアの法則が提供できるものとの間には、指数関数的に増大するギャップがあります。私たちの文明は計算に基づいています—建築と想像力の現在の限界を超える技術を見つけなければなりません。

Language