2016-07-21 10 views
1

私は、指定された拡張子を持つファイルのみのディレクトリ一覧を取得しようとしています。これはマッチとしてmetcal.**exe**metcal.**exe1**を返すことWindows /コマンドライン/ファイルを開くダイアログの正確なファイル拡張子とはどのように一致しますか?

C:\CODE\metcal>dir /b *.exe 
metcal.exe 
metcal.exe1 

お知らせ:一見これは、しかし、この単純な例をチェックアウト、行う簡単なものだそうです。 pythonで

は、同じようなことが起こるファイル:

C:\CODE\metcal>dir /b *.py 
metcal.py 
metcal.pyc 

通知は再びWindowsが*.py*.pyは、それが同様に.pycファイルをキャプチャで始まる何かを取ることを決定しました。

正確に一致する拡張子のみを取得する方法はありますか?上記のpythonファイルの例では、私は次のように(*の.pyの代わりに正しい構文で明らかに)起こるしたい注意点としては

C:\CODE\metcal>dir /b *.py 
metcal.py 

それは思ったほど簡単ではありませんWindowsでマッチング。

*.exe試合foo.exe, foo.exe1, foo.exeabcdeしかしないfoo.exe.bak

長い/短いファイル名に関連する類似したSO上の他の質問があります。 * .pyと* .pycの例では、名前のマングリング機構を導入すべきではありません。

**私はXPマシンとWin7マシンで実験しましたが、この動作はcmdプロンプトとファイルを開くダイアログで一貫していません。この矛盾した動作により、この問題はsomekindの設定に関連していると思われます。 **

+0

は、Windowsプロンプト 'cmd.exe'コマンドを意味し、右? – aschipfl

+1

与えられたパターンも8.3形式のファイル名に対してチェックされるので、 '* .exe'も' * .exe1'にマッチします。拡張子が3文字以下の場合、 '* .py'のように動作しているように見えますが、Windows 7 x64マシンでは* .pycのようなファイルは返されません。 'findstr'は次のようになります:' dir/B "* .exe" | findstr/L/E ".doc" – aschipfl

+2

[正確な拡張子でファイルを取得するためのワイルドカード](http://stackoverflow.com/questions/20761052/wildcard-to-get-files-by-exact-extension)の可能な複製 –

答えて

0

あなただけのこれらの拡張子(.py.pyc)を取得したいのであれば、あなたはこの方法のように試してみてください:「DOS」と

@echo off 
dir /b *.py* 
pause 
+0

これは問題ではありません。私が* .pyを求めたら、私はただの拡張子を期待していますが、私は.pyと.pyc ...と.pyoを得ています。私が望むのは、唯一の.pyを得るための構文を知ることです。 – Hucker

関連する問題