递归搜索Dirs& SubDirs和数字重命名文件

时间:2017-11-14 14:28:59

标签: powershell powershell-v3.0

我试图以递归方式扫描目录,并将dirs(和sub dirs)中的所有.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++)}

但是 - 这给了我一个错误

  

在语句块或类型定义中缺少关闭'}'       + CategoryInfo:ParserError:(:) [],
ParentContainsErrorRecordException
      + FullyQualifiedErrorId:MissingEndCurlyBrace

我确信这是我可以忽视的一些平凡的东西 - 但是在数字上重命名所有文件的正确语法是什么?

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

这些文件都是从数码相机导入的,因为这些文件都有垃圾名称 - 我基本上想要一种方法将它们导入程序并使文件保持相同的顺序。

1 个答案:

答案 0 :(得分:1)

正如错误消息所示,}缺少关闭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
}