
如果我想僅使用目錄列表查看特定擴展名的文件,我可以使用以下命令來做到這一點:
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 的簡短評論。