Batch file 查找循环文件名以查看它是否包含任何可能的?
不知何故,我可以使用for循环(/R)来查看文件名是否包含三个或更多不同部分中的一个Batch file 查找循环文件名以查看它是否包含任何可能的?,batch-file,Batch File,不知何故,我可以使用for循环(/R)来查看文件名是否包含三个或更多不同部分中的一个 for /R "C:\" %%A in ("*.*") do ( if %%~nxA==a*.txt echo a if %%~nxA==*b.txt echo b ) 等等 这可能吗?以下任一项应给出您指定的逻辑: for /r "c:\" %%F in ("a*.txt" "*b.txt") do echo %%F 或 但是,您必须意识到,您可能会得到重复的列表,因为像“a_b.txt”这样的文件将匹
for /R "C:\" %%A in ("*.*") do (
if %%~nxA==a*.txt echo a
if %%~nxA==*b.txt echo b
)
等等
这可能吗?以下任一项应给出您指定的逻辑:
for /r "c:\" %%F in ("a*.txt" "*b.txt") do echo %%F
或
但是,您必须意识到,您可能会得到重复的列表,因为像“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"
)
或者,您可以使用my方便有效地排序和删除重复项。BAT是纯脚本(JScript/批处理混合),从XP开始在任何Windows机器上本机运行
dir /s /b /a-d "c:\a*.txt" "c:\*b.txt" | jsort /u
dir /s /b /a-d "c:\a*.txt" "c:\*b.txt" | jsort /u