我正在尝试使用PowerShell
重命名包含数千张图片的文件夹。我想添加前缀和后缀,但这比我讨价还价更难。我完全不了解PowerShell ......并且已经挖了一些寻求帮助,但结果好坏参半。
我发现的最好的例子是Renaming Files with PowerShell
哪个收益......
Dir -recurse |排序{$ .FullName.Length} -Desc |重命名项{$ .Name -replace'','_'}
现在,我不想替换任何东西,所以我试着
Dir -recurse |排序{$ .FullName.Length} -Desc | Rename-Item {“pre-”+ $ .Name +“-suff”}
但这给了我一个错误,我不太确定如何解释它;
Rename-Item : A positional parameter cannot be found that accepts argument ' "pre-" + $_.Name + "-suff" '.
At line:1 char:50
+ ... _.FullName.Length} -Desc | Rename-Item { "pre-" + $_.Name + "-suff" }
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [Rename-Item], ParameterBindingException
+ FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.RenameItemCommand
我完全不知道这是想说什么。我已经深入挖掘,并找到了本教程:http://blogs.technet.com/b/heyscriptingguy/archive/2013/11/22/use-powershell-to-rename-files-in-bulk.aspx
它有一些略有不同的命令,所以我试着将其插入...
Get-ChildItem -Filter“ current ” - Recurse | Rename-Item -NewName {“pre-”+ $ _。name +“ - suffix”}
我没有得到任何错误,但似乎也没有发生任何错误。事实证明这非常令人沮丧,因为我一直在寻找答案,但我发现的每一页都充其量只是模糊不清。有没有更简单的方法来实现这一目标?我想在不影响文件扩展名的情况下附加前缀和后缀。
我确实找到了更接近我所需要的东西:http://social.technet.microsoft.com/wiki/contents/articles/25144.powershell-bulk-renaming-file-names.aspx
它建议使用这个脚本,
Get-ChildItem | Where-Object {$ .Extension -eq“.jpg” - 或$ .Extension -eq“.png”} | rename-item -newname {“CL - ”+ $ _。Name}
我改为......
Get-ChildItem | Where-Object {$ .Extension -eq“.jpg” - 或$ .Extension -eq“.png”} | rename-item -newname {“prefix-”+ $ _。名称+“-suffix”}
至少对文件做了一些事情,但现在后缀是在扩展名后附加,这显然不是我想要的。
答案 0 :(得分:3)
你几乎在那里:)
Get-ChildItem -Include *.jpg,*.png -Recurse |
Rename-Item -NewName { 'Prefix' + $_.BaseName + 'Suffix' + $_.Extension } -WhatIf
注意最后的-whatif
...此开关模拟命令执行...首先运行代码查看whatif
输出,如果对结果满意,则运行上面的相同命令没有-whatif
来执行。
$_.name
包含带扩展名的文件名,这就是为什么要获取附加到扩展名后缀的文件名的原因。
Get-Childitem | fl *
会向您显示可以使用的属性。