【问题标题】:file rename in bulk in powershell using foreach loop使用foreach循环在powershell中批量重命名文件
【发布时间】:2014-10-05 18:36:36
【问题描述】:
$folderpath = 'E:\BOOKS\Python\python\python'
$items = Get-ChildItem -Recurse $folderpathc *_pdf
foreach( $i in $items) { Rename-Item E:\BOOKS\Python\python\python\$i E:\BOOKS\Python\python\python\$i.pdf }

您好,我尝试使用上述命令重命名文件夹下的文件,但无法执行并出现以下错误。

Rename-Item : Cannot rename because item at 'E:\BOOKS\Python\python\python\book_pdf' does not exist.
At line:1 char:37
+ foreach( $i in $items) { Rename-Item <<<<  E:\BOOKS\Python\python\python\$i E:\BOOKS\Python\python\python\$i.pdf }
    + CategoryInfo          : InvalidOperation: (:) [Rename-Item], PSInvalidOperationException
    + FullyQualifiedErrorId : InvalidOperation,Microsoft.PowerShell.Commands.RenameItemCommand

【问题讨论】:

标签: powershell


【解决方案1】:

看起来您想将所有“_pdf”更改为“.pdf”,如果是这样,这是一个非常简单的方法。

ls -Path 'E:\BOOKS\Python\python\python' -Filter *_pdf | 
  ForEach-Object {$_ | Rename-Item -NewName $_.Name.Replace('_pdf', '.pdf')}

【讨论】:

    【解决方案2】:

    你把事情复杂化了。不要重新输入文件的路径名,使用 Get-ChildItem cmdlet 已经提供的 FullName 属性。然后只需使用 BaseName 属性的子字符串删除最后 4 个字符,并在末尾添加“.pdf”。

    $folderpath = 'E:\BOOKS\Python\python\python'
    $items = Get-ChildItem -Recurse $folderpathc *_pdf
    foreach( $i in $items) { 
        Rename-Item $i.FullName ($i.basename.substring(0,$i.BaseName.length-4)+".pdf")
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-23
      • 2017-06-22
      • 2017-12-10
      相关资源
      最近更新 更多