递归搜索目录和子目录并以数字方式重命名文件

Recursively Search Dirs & SubDirs And Numerically Rename Files

我正在尝试递归扫描目录并将目录(和子目录)中的所有 .jpg and .jpeg 文件重命名为数字命名约定。

我有这个语法

get-childitem -Recurse -path C:\Users\jsimpson\Desktop\Test123 | where {($_.extension -eq '.jpg') -or ($_.extension -eq '.jpeg') | %{Rename-Item $_ -NewName (‘MyFile{0}.txt’ -f $nr++)}

但是-这给我一个错误

Missing closing '}' in statement block or type definition.
+ CategoryInfo : ParserError: (:) [],
ParentContainsErrorRecordException
+ FullyQualifiedErrorId : MissingEndCurlyBrace

我确信这对我来说是一件平凡的事情,但我忽略了 - 但是用数字重命名所有文件的正确语法是什么?

编辑
当前文件名为 P1870426.jpeg 我想将其重命名为 1.jpeg

这些文件都是从数码相机导入的,并且由于这些文件的名称很垃圾 - 我基本上想要一种方法将它们导入到程序中并让文件保持相同的顺序。

如错误消息所述,缺少 } 以关闭 Where :

Get-ChildItem -Recurse -Path 'C:\Users\jsimpson\Desktop\Test123' | Where-Object {$_.Extension -match 'jpg|jpeg'} | ForEach-Object {
    $newFile = "{0}$($_.Extension)" -f $nr++
    Rename-Item $_.FullName -NewName $newFile -Force
}