首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用批处理和findstr获取特定文件?

如何使用批处理和findstr获取特定文件?
EN

Stack Overflow用户
提问于 2017-02-06 11:52:47
回答 1查看 55关注 0票数 0

我想从目录中获取特定的文件:

代码语言:javascript
复制
> 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

如果我用

代码语言:javascript
复制
>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 匹配呢?例如,输出:

代码语言:javascript
复制
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。这是一个不起作用的代码。

代码语言:javascript
复制
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-匹配当前文件.

非常感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-06 15:06:04

当您迭代使用dir检索的文件列表并由findstr对其进行筛选时,只需删除数字即可。使用另一个以数字作为分隔符的for /f,将它们与初始字符分开。

代码语言:javascript
复制
@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命令。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42067149

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档