正则expression式search批量replace

我想要在一组文件中的窗口批量search/replace正则expression式模式。 它会是这样的:

if the regex matches a line matches then replace it with a new line. 

也需要在正则expression式中添加一个variables来replace值。 有谁知道如何处理批处理脚本? 我不太熟悉它。 一些例子可能有帮助。

您可以从findstr命令中受益。 它支持语法有限的正则表达式。 说,你有文件

 ignore_me.txt rename_me01.txt rename_me02.txt rename_me03.txt rename_me04.txt 

一个命令

 dir /b | findstr "rename_me[0-9][0-9]" 

会输出

 rename_me01.txt rename_me02.txt rename_me03.txt rename_me04.txt 

好吧,不是很好的例子,因为你可以用老的做这个? 通配符。 我的观点是, findstr模式是一个正则表达式。

最近我有类似的问题,但我无聊试图找出如何取代正则表达式模式。 我不确定是否只有原生的Windows命令才有可能。 所以,对于更简单,但仍然原生的解决方案,我提到的Windows脚本主机 。 我的任务是找到所有名称中的日期格式为dd.mm.yyyy的文件,并用当前日期替换该日期。

这个脚本是:

 <job> <script language="JavaScript"> var d = new Date(); // get current date for replacement var currDate = (d.getDate() + "." + (d.getMonth() + 1) + "." + d.getFullYear()) // add leading zeros to date and month .replace(/^([0-9])\./g, '0$1.').replace(/\.([0-9])\./g, '.0$1.'); var fso = new ActiveXObject("Scripting.FileSystemObject"); var files = new Enumerator(fso.getFolder(".").files); var count = 0; for (; !files.atEnd(); files.moveNext()) { var file = ""+files.item(); // make it string if (file.match(/[0-9]{2}\.[0-9]{2}\.[0-9]{4}/)) { var newName = file.replace(/[0-9]{2}\.[0-9]{2}\.[0-9]{4}/, currDate); fso.moveFile(file, newName); count++; } } WScript.echo("Renamed "+count+" files"); </script> </job> 

将它保存在名称为u.wsf的文件夹中。 该扩展与wscript相关联,所以当双击它在GUI模式下运行的文件时,也可以在命令行模式下运行:

 cscript u.wsf 

Unix上的标准工具是sed和Perl。 有两个DOS / Windows端口。

 A:\> sed -i "s/foo/bar/g" file1 file2 file3 A:\> perl -pi -e "s/foo/bar/g" file1 file2 file3 

将在命名的文件中用“bar”替换“foo”。 sed比较老,-i选项没有标准化,而且Perl的功能更强大,是一种成熟的编程语言,其正则表达式功能集好得多,但是对于一个简单的一次性工作来说,或者没有问题。