Batch file 如何使用批处理和findstr获取特定文件?
我想从目录中获取特定文件:Batch file 如何使用批处理和findstr获取特定文件?,batch-file,Batch File,我想从目录中获取特定文件: > 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].*.ar
> 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]-从当前文件中进行匹配
非常感谢 当您迭代使用
dir
检索的文件列表并通过findstr
对其进行过滤时,您只需删除这些数字。使用另一个带有数字作为分隔符的for/f
,将其与初始字符分开
@echo关闭
setlocal enableextensions disabledelayedexpansion
对于/f“delims=”%%f in('
目录/b*.arj
^|findstr/r“^k^c^ev”
“)为/f“delims=0123456789”%%a在(“%%~f”)中的执行(
回显调用:myFunction“%%~a”“%%~f”
)
这将只是回显以控制台函数调用操作。执行函数时,请删除
echo
命令。call
无法处理REGEX。您可能希望使用类似于调用:myfunction%a的之类的方法。此外,您还必须将中的管道符号转义为
:^ |
安装确认窗口,然后单击“安装确认”。谢谢你的解决方案对我有帮助。我修改了一点代码:for/f“delims=“%%f in('dir/b*.arj^ findstr/r[0-9]”)do for/f“delims=0123456789”%%a in(“%%f”)do(调用:myfunc%%~a%%~f)