2014-01-22 41 views
3

我有要搜索的模式。說「* .txt」。什麼意思在Windows文件模式中代字符

現在我有一些文件,我不想在那裏列出。我相信它們不符合這種模式。 但在窗戶上,他們這樣做。

我知道波形符是用來做舊的8.3文件名的縮寫形式。那是LongFilename.json可能是LONGFI〜1.JSO。但我不知道它們在文件搜索模式下以某種方式在窗口上處理。他們是。我無法找到任何有關它們的含義以及如何按照我的方式匹配文件的文檔。

我的問題不是簡單的形式。或者我認爲它與它沒有直接關係。

我有文件「A.txt」。現在我想要臨時文件並使用「A.txt〜」。這是通常不可見的unix備份文件。但在窗戶上,它們本身不應有特殊的含義。僅限於我的應用程序。

現在我想要列出「* .txt」文件。命令 dir * .txt 我也驚訝地發現所有.txt文件都在同一個目錄中。我不想要他們。我使用Win32 API中的FindFileFirst。我在文檔中找不到有關代字符的任何內容。 FindFileFirst(「 .txt」,句柄)還返回文件「A.txt〜」。我可以使用一些標誌來排除它們嗎?我知道我可以做出特殊的狀況,就像我爲了「。」和「..」。 〜操作員如何工作? A.txt〜1也匹配。代字號後的所有內容都被忽略了該功能或錯誤?

我測試在Windows 7專業版,64版,如果改變任何東西。

+0

我也見過類似的東西。在我的情況下,它不是用代字號。要使用您的示例,我正在搜索「* .txt」,但它與我所說的「* .txt *」匹配。重命名你的文件,使擴展名爲「.txt1」,看看它是否仍然匹配。它可能不是關於代字號的,而是關於該函數如何執行匹配的。 – Darren

+0

哦!你當然是對的。我甚至不認爲這可能是這樣。看起來我無法匹配文件結尾的東西,因爲在末尾有隱含的*。 A.txt1確實與dir * .txt匹配:-( – Pihhan

回答

4

FindFirstFile還包括遺留原因很短的名稱,以便格局*.txt將包括與8.3表示在*.txt結束,其中包括*.txtANYTHING,而不僅僅是~字符(見dir /x對於什麼正在對匹配的)東西。

您需要在FindNext枚舉中進行過濾。

+0

是的,它似乎是這樣,它僅適用於長度爲3的後綴。* .html與* .html1不匹配,但* .htm與* .html和*匹配。 html1。遺留文件處理奇怪的副作用 – Pihhan

0

如果您正在搜索的.txt文件,例如,你可以使用:在Windows的「類型的文本」選項排除TXT〜和類似的文件,因爲它們是不可識別的類型了。

這是常規Windows搜索的工作。我不是100%確定API的,但它也應該在那裏。

+0

問題是我在應用程序中使用舊的Win32,在那裏我發現問題,我會在哪裏輸入「kind:text」?我不想使用文件資源管理器 – Pihhan

+0

這是更多像SQL的方式。這一頁可能的幫助。我不是一個真正的主題專家,但這一點,實在值得一試我猜。 http://msdn.microsoft.com/en-us/library/windows/desktop/ bb266512%28V = vs.85%29.aspx –