批处理文件正则表达式,用于查找名称中带有数字的文件

Ori*_*Ori 6 expression file batch-file

我想要一个批处理文件的示例,该文件使用正则表达式来查找名称中包含数字或某个数字范围的文件.

有没有办法做到这一点?一个简单的例子?

Han*_*ood 10

其中一些功劳归功于YAP的答案.

以下代码将为您提供目录中的每个文件,文件名中至少有一位数字:

@Echo Off
CD C:\Folder\To\Process
Dir /B>Dir.temp
FindStr /R "[0-9]" "Dir.temp">FindStr.temp
Del Dir.temp
For /F "tokens=*" %%a In (FindStr.temp) Do Call :WorkIt "%%a"
Del FindStr.temp
Exit /B

:WorkIt
:: Insert code here.  Use %1 to get the file name with quotes.  For example:
Echo Processing %1...
Exit /B
Run Code Online (Sandbox Code Playgroud)

FindStr行包含正则表达式.正则表达式的命令行版本是有限的.您接下来的确切范围以及文件名的格式是什么?

例如,如果您知道所有文件中都包含3位数字,则可以使用表达式将其限制为000到299之间的所有项目[0-2][0-9][0-9].

  • 嗨,可以通过将 `dir /B` 的输出传送到 `findstr` 来摆脱中间文件 `Dir.temp`。像这样`dir /B | findstr /R "[0-9]" > FindStr.temp`。否则,一个非常好的帖子,对我帮助很大。干杯! (2认同)

sha*_*wty 2

我假设您在这里了解命令提示符/MS-Dos 批处理文件?

如果您很遗憾,答案是否定的,普通旧批处理文件支持的唯一通配符是:

    * = match all
Run Code Online (Sandbox Code Playgroud)

和 ?= 匹配 1

所以:

      mytune*.mp?
Run Code Online (Sandbox Code Playgroud)

将匹配:

      mytune01.mp3, mytune01.mpg, mytune-the-best.mpe
Run Code Online (Sandbox Code Playgroud)

然而还有一个替代方案......

如果您使用的是现代 Windows 版本,那么您很可能会安装 power-shell,请单击

开始->运行,然后输入 power-shell 并按回车键,如果您打开了看起来像命令提示符窗口的内容,那么您已经安装了它,如果没有,请在 MS 站点上查找下载。

一旦你掌握了这个,如果你想直接深入,你可以在 Reg-ex 上找到你需要的一切就是 PS:

http://powershell.com/cs/blogs/ebook/archive/2009/03/30/chapter-13-text-and-regular-expressions.aspx

不过,我建议先花一个小时左右的时间学习基础知识。