我可以在某种程度上使用for循环(/ R)来查看文件名是否包含三个或更多不同部分之一?
for /R "C:\" %%A in ("*.*") do (
if %%~nxA==a*.txt echo a
if %%~nxA==*b.txt echo b
)
等?
这可能吗?
答案 0 :(得分:0)
以下任何一项都应该给出您指定的逻辑:
for /r "c:\" %%F in ("a*.txt" "*b.txt") do echo %%F
或
dir /s /b /a-d "c:\a*.txt" "c:\*b.txt"
但是 ,你必须意识到你可以获得重复的列表,因为像#34; a_b.txt"将匹配两个掩码 - 每个掩码单独列出。
您可以使用以下内容获取不同的值:
@echo off
setlocal disableDelayedExpansion
set "prior="
for /f "delims=" %%F in (
'dir /s /b /a-d "c:\a*.txt" "c:\*b.txt" ^| sort'
) do (
set "now=%%F"
setlocal enableDelayedExpansion
if !now! neq !prior! echo !now!
endlocal
set "prior=%%F"
)
或者您可以使用我的JSORT.BAT utility方便有效地排序和删除重复项。 JSORT.BAT是纯脚本(JScript /批处理混合),可以在任何Windows机器上从XP开始本地运行。
dir /s /b /a-d "c:\a*.txt" "c:\*b.txt" | jsort /u