2017-07-27 18 views
0

文件夾中有一些文件,一些文件名稱規則,如[name]_[date].doc(例如:aaa_20170727.doc),它也有一些文件規則,如[name]_[date]_org.doc(例如:aaa_20170727_org.doc)。如何獲得沒有額外單詞的特定文件列表?

如果我使用dir *.doc /BO:N它將輸出[name]_[date].doc[name]_[date]_org.doc文件列表。

問:

  1. 如何我只得到文件名規則類似[name]_[date].doc
  2. 是否有可能使用for循環?
+0

有可能使用'for'循環。只有'_org.doc',你可以做'_ *。doc'。 – SteveFest

+0

你在這裏 - 我寫了一個答案。如果您覺得它有用,請勾選旁邊的複選標記,以便未來的訪問者知道這可以解決問題。 – SteveFest

回答

0

鑑於名稱部分做不包含自身下劃線_,而且總有一個有效日期部分,你可以使用這個(雖然這仍可能匹配的一些項目有多餘的話):

dir /B /A:-D /O:N "*_????????.doc" 

如果日期部分也可以缺失,或名稱部分可以包含下劃線,以及,你可以使用findstr過濾掉錯誤的比賽,就像這樣:

dir /B /A:-D /O:N "*_????????.doc" | findstr /I "_[0-9][0-9][0-9][0-9][0-1][0-9][0-3][0-9].doc$" 

關於for環:我想你想通過for循環遍歷結果文件;如果是的話,你確實需要一個for /F loop(注意躲過管^|):

for /F "delims= eol=|" %%F in (' 
    dir /B /A:-D /O:N "*_????????.doc" ^| findstr /I "_[0-9][0-9][0-9][0-9][0-1][0-9][0-3][0-9].doc$" 
') do (
    rem // Do something with each file: 
    echo/%%F 
) 
0

dir沒有功能ex clude東西。所以你必須這樣做「外部」:

dir /b /o:n *.doc|find /i /v "_org.doc" 

(注:dir不能連接交換機例如像findstrdir /bo:n不起作用,使用dir /b /o:n

+0

非常感謝你。 我很抱歉有一些詞遺漏,我更新了問題。 – Peggy

相關問題