难以使用PowerShell重命名批量文件而不会丢失扩展名

时间:2015-11-30 05:21:15

标签: powershell

我正在尝试使用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”}

至少对文件做了一些事情,但现在后缀是扩展名后附加,这显然不是我想要的。

1 个答案:

答案 0 :(得分:3)

你几乎在那里:)

Get-ChildItem -Include *.jpg,*.png -Recurse | 
  Rename-Item -NewName { 'Prefix' + $_.BaseName + 'Suffix' +  $_.Extension } -WhatIf

注意最后的-whatif ...此开关模拟命令执行...首先运行代码查看whatif输出,如果对结果满意,则运行上面的相同命令没有-whatif来执行。

$_.name包含带扩展名的文件名,这就是为什么要获取附加到扩展名后缀的文件名的原因。

Get-Childitem | fl *会向您显示可以使用的属性。