目前我正在使用如下命令:
dir | rename-item -NewName {$_.name -replace "-","_"}
但现在我需要为目录中的所有文件的文件名添加前缀。
我无法预测每个文件名有多长(它会变化),所以我不能只使用一堆.
通配符。
我需要它在每个文件名的开头附加一个固定短语,不管该文件名是什么。
答案1
正则表达式的替代方法是使用简单的字符串操作来创建新的文件名。
$items=Get-ChildItem;
$items | Rename-Item -NewName { "Prefix_" + $_.Name };
答案2
你离得很近。
-replace
使用 RegEX,在正则表达式中,你首先用^
- 对于后缀,你可以类似地将行尾的锚点替换为
$
- 为了避免重命名文件的任何可能的重复,请将管道的第一个元素括在括号中。
(Get-ChildItem -File) | Rename-Item -NewName {$_.Name -replace "^","Prefix_"}
答案3
删除文件夹中所有内容的前缀:
Get-ChildItem 'Folderpath\KB*' | Rename-Item -NewName { $_.Name -replace 'KB*','' }
为文件夹中的所有内容添加前缀:
foreach($item in 'Folderpath')
{
Get-ChildItem 'C:\Users\ilike\OneDrive\Desktop\All in one script\Single Patch here' | Rename-Item -NewName { "KB" + $_.Name }
}
花了一段时间,希望这可以帮助有需要的人
答案4
获取子项 *.FileExtension_ | foreach { 重命名项 $_ $.名称.替换($.名称,"前缀_" + $_.名称) }
将 FileExtension_ 替换为与要添加前缀的文件类型对应的扩展名。或者只需删除 .FileExtension_ 以及“.”即可为工作目录中的所有文件添加前缀。将 Prefix_ 替换为所需的前缀。