寻找一种根据扩展名大小写删除目录中文件的方法

时间:2019-03-28 16:46:46

标签: powershell batch-file cmd

我希望您使用可以大大简化我生活的工具提供帮助。到目前为止,我还没有脚本知识。我不确定哪种Powershell或.bat最适合我的需求:

我有一个文件夹,其中包含数千个带有不同扩展名的小文件。有时我需要删除所有扩展名都用大写字母写的文件,有时是用小写字母写出来的。

我需要一个脚本,该脚本会在输入中询问我是否要删除大写或小写文件,然后删除文件夹中所有扩展名为大写或小写的文件(根据输入)。

我不知道从哪里开始。你能分享一些想法吗?

感谢您的时间

1 个答案:

答案 0 :(得分:2)

一种方法是使用-match正则表达式运算符。由于PowerShell运算符始终在区分大小写的字符串比较中默认使用区分大小写的,因此我们需要使用c对其进行限定,因此必须-cmatch进行限定。为了只匹配大写字母,我通常使用正则表达式类\p{Lu}Lu代表“ L 字母, u pper”):

$allUppercase = Get-ChildItem -Path C:\path\to\folder\ |Where-Object {$_.Extension -cmatch '^.\p{Lu}+$'}

,现在您可以使用Remove-Item删除它们:

$allUppercase |Remove-Item -Force

如果只想使用小写扩展名,请测试\p{Ll}

$allLowercase = Get-ChildItem -Path C:\path\to\folder\ |Where-Object {$_.Extension -cmatch '^.\p{Ll}+$'}