【问题标题】:Removing certain word in file name删除文件名中的某些单词
【发布时间】:2019-10-23 22:52:12
【问题描述】:

我想删除文件名中的“.pdf”一词。它不是我之前用“.pdf”命名的文件的扩展名。如何从所有文件中删除它?我的文件位于主文件夹内的许多文件夹中。

C:\MainFolder\Folder1\document.pdf

C:\MainFolder\Folder2\document

C:\MainFolder\Folder3\document.pdf

Get-ChildItem | Rename-Item -NewName { $_.BaseName.Replace(“.pdf”,””) + $_.Extension }

我尝试使用它,但它只会在文件夹本身中删除。我需要为所有文件夹执行此操作

【问题讨论】:

  • 我没有看到你的代码和文件夹结构和示例文件名。请编辑问题并分享。另外,根据我的假设,我给出了答案。
  • 请不要删除并重新发布完全相同的问题。编辑和改进您现有的问题,以避免丢失 cmets 中已经讨论的所有说明。
  • 只需将-Recurse 选项添加到Get-ChildItem 即可扫描所有子文件夹。

标签: powershell file-rename get-childitem


【解决方案1】:

这应该可以解决问题:

    $files = Get-ChildItem 'C:\mypath' -Recurse

    foreach( $file in $files ) {

    if( !$file.PSIsContainer ) {

        $extension = $file.Extension
        $newname   = $file.BaseName.Replace('.pdf', '' ) + $extension
        Rename-Item -Path $file.FullName -NewName $newname | Out-Null
    }

}

【讨论】:

  • 这里不需要 foreach 循环。 Rename-item 在技术上可以一次性重命名所有内容。
  • 它没有用。该文件仍然包含“.pdf”一词。
  • 我在这里测试过。 “test.pdf.txt”变成“test.txt”。这是你想要的吗?
  • 它失去了扩展名。这是一个PDF文件
  • 不在这里。 “test.pdf”保持“test.pdf”。你的文件叫什么名字?
【解决方案2】:

用这个替换你的代码:

#Finds all files with the string “pdf” anywhere in the name recursively and will replace with nothing(which will remove basically).
Get-ChildItem -Path C:\your\root\folder\path -Filter "*pdf*" -Recurse  | Rename-Item -NewName {$_.Name -replace "pdf",''}

希望对你有帮助。

【讨论】:

  • 这也会从 pdf 文件中删除扩展名。
  • 因此选择扩展名并在删除后将其添加回来。 :)
  • 或者把replace语句改成-replace '.pdf.pdf' to '.pdf'
  • @PaulG:如果不是 pdf,那么这可能会导致问题。但如果它只是 pdf,那么是的,我们很好。
【解决方案3】:

正如Filburt 在对该问题的评论中指出的那样,您的命令中唯一缺少的是-Recurse 开关,以便处理输入路径的整个目录子树中的文件.

此外,为了安全起见,添加-File 开关以将处理限制在文件(而不是目录):

Get-ChildItem -Recurse -File |
  Rename-Item -NewName { $_.BaseName.Replace('.pdf', '') + $_.Extension } -WhatIf

-WhatIf common parameter预览操作。一旦你确定它会做你想做的事,就删除它。

请注意,基本名称不包含子字符串 .pdf 的文件将被有效忽略。

为了加快处理速度,您可以使用
-Filter *.pdf?*

使 Get-ChildItem 预选感兴趣的文件

【讨论】:

    猜你喜欢
    • 2011-09-27
    • 2014-04-19
    • 2022-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-12
    • 1970-01-01
    相关资源
    最近更新 更多