文件夹中有一些文件,一些文件名规则如[name]_[date].doc
(例如aaa_20170727.doc
),它也有一些文件规则,如[name]_[date]_org.doc
(例如{{1} }})。
如果我使用aaa_20170727_org.doc
,则会输出dir *.doc /BO:N
和[name]_[date].doc
文件列表。
问题:
[name]_[date]_org.doc
?答案 0 :(得分:0)
dir
没有 ex 功能的功能。所以你必须这样做"外部":
dir /b /o:n *.doc|find /i /v "_org.doc"
(注意:dir
无法连接交换机,例如findstr
:dir /bo:n
无效,请使用dir /b /o:n
)
答案 1 :(得分: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
)