您可以受益于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
是一个正则表达式。
最近我遇到了类似的问题,但我很无聊试图找出如何解决replace正则表达式模式。我不确定仅使用本机 Windows 命令是否可以实现。因此,为了更简单,但仍然是我提到的本机解决方案Windows 脚本宿主。我的任务是查找名称中包含日期格式的所有文件年月日并将该日期替换为当前日期。
其脚本是:
<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