在不丢失扩展名的情况下使用PowerShell重命名批文件很困难

在不丢失扩展名的情况下使用PowerShell重命名批文件很困难,powershell,Powershell,我正在尝试使用PowerShell重命名包含数千张图像的文件夹。我想同时添加前缀和后缀,但事实证明这比我预想的要困难得多。我一点也不懂PowerShell。。。他们四处寻找帮助,结果喜忧参半 我发现最好的例子是: 这就产生了 Dir-recurse | Sort{$.FullName.Length}-Desc |重命名项{$.Name-replace'',''} 现在,我不想替换任何东西,所以我试着 Dir-recurse | Sort{$.FullName.Length}-Desc |重命名项

我正在尝试使用
PowerShell
重命名包含数千张图像的文件夹。我想同时添加前缀和后缀,但事实证明这比我预想的要困难得多。我一点也不懂PowerShell。。。他们四处寻找帮助,结果喜忧参半

我发现最好的例子是:

这就产生了

Dir-recurse | Sort{$.FullName.Length}-Desc |重命名项{$.Name-replace'',''}

现在,我不想替换任何东西,所以我试着

Dir-recurse | Sort{$.FullName.Length}-Desc |重命名项{“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
我完全不知道这是想说什么。我深入研究了一下,发现了本教程:

它有一些稍微不同的命令,所以我试着用

Get ChildItem-Filter“current”-递归|重命名项-NewName{“pre-”+$\名称+“-后缀”}

我没有发现任何错误,但似乎也没有发生任何事情。这被证明是非常令人沮丧的,因为我一直在寻找答案,但我找到的每一页充其量都是模糊的。有没有更简单的方法来实现这一点?我想在不影响文件扩展名的情况下附加前缀和后缀

我确实找到了更接近我需要的东西:

它提出了这个剧本

获取ChildItem |其中对象{$.Extension-eq.jpg“-或$.Extension-eq.png”}|重命名项-newname{“CL-”+$uq.Name}

我改成了

获取子项|其中对象{$.Extension-eq.jpg“-或$.Extension-eq.png”}|重命名项-newname{“prefix-”+$\名称+“-后缀”}

这至少对文件做了些什么,但是现在后缀被附加在扩展名之后,这显然不是我想要的

你就快到了:)

请注意末尾的
-whatif
…此开关模拟命令执行…首先运行代码查看
whatif
输出,如果您对结果满意,则在不执行
-whatif
的情况下运行上述同一命令

$\uu.name
包含带有扩展名的文件名,这就是为什么要将带有后缀的文件名附加到扩展名


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

{“prefix-”+$.Name+“-suffix”}
更改为
{“prefix-$($.BaseName)-suffix$($.Extension)”
+1,解释问题并提供步骤,但您使用+连接字符串的具体原因是什么?(你忘记了字符串中的后缀)@Lieven Keersmaekers-就我个人而言,我也使用双引号来连接字符串,但在这个例子中,我觉得使用
+
更好地演示了在基名称中添加后缀和前缀……是的,我确实忘记了后缀,感谢您捕捉到这一点:)…你是昆虫中的神!非常感谢你,这太神奇了!这正是我所需要的!
Get-ChildItem -Include *.jpg,*.png -Recurse | 
  Rename-Item -NewName { 'Prefix' + $_.BaseName + 'Suffix' +  $_.Extension } -WhatIf