如何在批处理文件重命名中排除带有后缀的文件



我正在尝试排除任何带有"机密";该脚本会批量重命名文件夹中的文件。

然而,当我尝试这个脚本时;机密";它不会改变,没有";机密";

Get-ChildItem -Exclude "*Confidential*"  | rename-item -NewName { $_.BaseName + " - Confidential" +$_.Extension }

不幸的是,在没有-Recurse的情况下,-Include-Exclude参数仅适用于输入路径(在您的情况下为当前目录(的叶组件(文件/目录名(,而不适用于其子级

解决方法是使用Get-Item *(或Get-ChildItem *(。它确保(隐含的(目标路径的子级成为目标(使用显式目标路径,附加/*;添加-Force以包括隐藏的子项(,这反过来又确保任何-Include/-Exclude参数都应用于这些子级的名称:

Get-Item * -Exclude *Confidential*  | 
Rename-Item -NewName { $_.BaseName + " - Confidential" + $_.Extension }

有关讨论,请参阅GitHub第3304期。

最新更新