3

検索するパターンがあります。「*.txt」と言います。

今、そこにリストしたくないファイルがいくつかあります。このパターンには合わないと思います。しかし、Windowsではそうです。

レガシー 8.3 ファイル名の短縮形を作成するためにチルダ文字が使用されていることは知っています。つまり、LongFilename.json は LONGFI~1.JSO の可能性があります。しかし、ファイル検索パターンのウィンドウで何らかの形で処理されているとは知りませんでした。彼らです。それらが何を意味するのか、ファイルを自分のやり方で一致させる方法についてのドキュメントが見つかりません。

私の問題は短い形式ではありません。もしくは直接関係ないと思います。

ファイル「A.txt」があります。今度は一時ファイルが欲しくて「A.txt~」を使いました。通常は表示されない UNIX バックアップ ファイルです。しかし、Windows では、それ自体で特別な意味を持つべきではありません。私のアプリケーションのみ。

「*.txt」ファイルのリストが必要です。コマンド dir *.txt は、驚いたことに、同じディレクトリ内のすべての .txt~ ファイルも返します。そして、私はそれらを望んでいません。Win32 API の FindFileFirst を使用します。ドキュメントでチルダ文字については何も見つかりませんでした。FindFileFirst(" .txt", handle) はファイル "A.txt~" も返します。それらを除外するためにいくつかのフラグを使用できますか? 「。」のように、特別な条件を作成できることを知っています。と ".."。~ 演算子はどのように機能しますか? A.txt~1 も一致します。チルダ以降はすべて無視されますか? それは機能ですか、それともバグですか?

Windows 7 Professional、64 エディションでそれをテストしています。

4

2 に答える 2

4

FindFirstFile従来の理由から短い名前も含まれているため、パターンには、文字だけでなく、includesで終わる表現*.txtを持つものすべてが含まれます (何と照合されるかについては、 を参照してください)。8.3*.txt*.txtANYTHING~dir /x

FindNext 列挙でフィルター処理する必要があります。

于 2014-01-22T13:26:11.663 に答える
0

たとえば、.txt ファイルを検索している場合、Windows で「kind:text」オプションを使用して、txt~ および同様のファイルを除外できます。

これは、通常の Windows 検索で機能するものです。API について 100% 確信があるわけではありませんが、そこにもあるはずです。

于 2014-01-22T13:34:51.993 に答える