在 Windows 命令列上使用 DIR 命令排除特定副檔名的文件

在 Windows 命令列上使用 DIR 命令排除特定副檔名的文件

如果我想僅使用目錄列表查看特定擴展名的文件,我可以使用以下命令來做到這一點:

DIR *.txt 

它顯示所有帶有.txt擴展名的檔案。
現在我想知道是否有任何命令可以排除某些擴展名?
例如,我不想看到任何副檔名為 的文件.exe,我該怎麼做?

答案1

DIR 不會允許您嘗試執行的操作。然而 DIR 和 FINDSTR 可以解決這個問題。

例如,以下內容將忽略 DIR 清單中的所有 .txt 檔案。

dir | findstr /v /i "\.txt$" 

答案2

dir /B | find /V ".txt"

這將列出所有文件,尋找將過濾掉任何不包含“.txt”的文件。它遠非完美,但也許已經足夠了:)

答案3

這取決於您的命令解釋器。

微軟cmd沒有這樣的設施,正如您從其他答案中看到的那樣,必須對dir.然而,該工具來自JP Software 的 TCC/LE有這個功能。它被稱為文件排除範圍對於您問題中的範例,如下使用:

目錄 /[!*.exe] *

答案4

為此,請使用 定義巨集DOSKEY。我排除了目錄並忽略了大小寫 - YMMV。另外,/B似乎是最合理的DIR過濾選項,/D/W不適合該任務,並且長格式/N(預設)並且/X在某些情況下在檔案名稱後包含附加文字(用於符號連結)。在命令列上檢查一下:

DOSKEY  FIR=DIR/B/A-D^|FINDSTR /VIE $*
DOSKEY FLIR=DIR/X/A-D^|FINDSTR /VIE $*

FIR為了過濾的 DIR, 得到它? :)FLIR如果需要的話也可以使用長版。然後像這樣使用它:

fir .jpg
flir jpg
fir "jpg htm"

後者是因為如何FINDSTR讀取作為參數提供的模式,如/?.僅第一個參數被視為模式,其他參數被解釋為檔案名,即使在管道中運行時也是如此。

我更喜歡FINDSTR普通的,FIND因為它有一個時髦的/E開關,僅在行尾進行過濾,這在按文件擴展名過濾時似乎更可取(但同樣,YMMV)。

方便的SS64站點解釋如何在檔案中設定巨集TXT以供永久重複使用。請注意,^對於儲存在文字檔案中的宏,沒有插入符可以轉義特殊字元。

要了解巨集(「控制台別名」)在幕後如何運作的基礎知識,請閱讀Eryk Sun 對 SO 的簡短評論

相關內容