我想从目录中获取特定文件:
> 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
没关系。 但是如何匹配以下文件 [a-z] [0-9] .arj 并调用匹配结果 [a-z] 的函数?例如,输出:
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-z] - 与当前文件匹配。
非常感谢!
答案 0 :(得分:0)
当您迭代使用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
命令。