我想从目录中获取特定的文件:
> dir /B *.arj
bc170117.arj
be170117.arj
co170117.arj
curd0114.arj
curd0115.arj
curd0116.arj
ev_k0113.arj
kgrd0113.arj
kgrm1612.arj
metd0113.arj
rv503432.arj
test.arj如果我用
>dir /b *.arj | findstr /r "^k[a-z].*.arj$ ^c[a-z].*.arj$ ^ev_[a-z].*.arj$"
co170117.arj
curd0114.arj
curd0115.arj
curd0116.arj
ev_k0113.arj
kgrd0113.arj
kgrm1612.arj没问题的。但是如何将以下文件(-z.arj)和调用函数与匹配的结果 and 匹配呢?例如,输出:
bc170117.arj bc
be170117.arj be
co170117.arj co
curd0114.arj curd
curd0115.arj curd
curd0116.arj curd
ev_k0113.arj ev_k
kgrd0113.arj kgrd
kgrm1612.arj kgrm
metd0113.arj metd
rv503432.arj rv调用函数需要对每个匹配的文件执行smth。这是一个不起作用的代码。
FOR /F "tokens=*" %a IN ('dir /b *.arj | findstr /r "^[a-z][0-9].arj$"') DO ( call:myfunction [a-z] [a-z][0-9].arj )a-匹配当前文件.
非常感谢!
发布于 2017-02-06 15:06:04
当您迭代使用dir检索的文件列表并由findstr对其进行筛选时,只需删除数字即可。使用另一个以数字作为分隔符的for /f,将它们与初始字符分开。
@echo off
setlocal enableextensions disabledelayedexpansion
for /f "delims=" %%f in ('
dir /b *.arj
^| findstr /r "^k ^c ^ev_"
') do for /f "delims=0123456789" %%a in ("%%~f") do (
echo call :myFunction "%%~a" "%%~f"
)这将简单地回显以控制台函数调用操作。在函数实现时删除echo命令。
https://stackoverflow.com/questions/42067149
复制相似问题