【问题标题】:how to use windows powershell to clean up (rename) filenames WITHOUT changing the file extention?如何在不更改文件扩展名的情况下使用 Windows Powershell 清理(重命名)文件名?
【发布时间】:2015-10-13 19:53:33
【问题描述】:

在这里的一个稍微类似的问题上,我发现了这个 powershell 脚本示例,它可以一次在许多文件名中重命名或更好地“替换字符”。但是这也可能发生在文件扩展本身,这是不好的。

那么我怎样才能改变这个例子,使它仍然重命名文件名,但保持文件扩展不变?

这里是用下划线替换文件名中所有点的示例:

Dir | Rename-Item -NewName { $_.Name -replace "\.","_" }

问题是:如何解决它也没有替换最后一个点(文件扩展名)?

【问题讨论】:

    标签: windows powershell scripting filenames renaming


    【解决方案1】:

    您可以使用Basename 属性访问文件名减去扩展名,因此您可以如下组合:

    Get-ChildItem | Rename-Item -NewName { "$($_.BaseName -replace '\.','_')$($_.Extension)" }
    

    【讨论】:

      【解决方案2】:

      谢谢。但碰巧我刚刚找到了我最喜欢的this solution here on stackoverflow,因为它整洁且易于理解

      dir | Rename-Item -NewName { $_.BaseName.replace(".","_") + $_.Extension }
      

      而且好处是,只需稍作修改,它就可以立即用于清理其他文件名内容。像这样:

      dir | Rename-Item -NewName { $_.BaseName.replace(".","_").replace("nastyKeyword1","").replace("nastyKeyword2","") + $_.Extension }
      

      PS: 我从Powershell replacing periods 中提取了我的解决方案,并根据我的需要对其进行了修改。我不认为这个问题应该被当作一个骗子来解决,因为我认为这个问题或问题并不完全相同,而是一个变体。但如果它违反规则,那么我可以接受。大胆试试吧。

      【讨论】:

      • 很高兴您找到了答案,但您至少应该在答案中包含指向您找到的解决方案的链接。还可以考虑将您的原始问题作为重复问题关闭。
      • 我从stackoverflow.com/questions/14541980/… 中提取了我的解决方案,并根据我的需要对其进行了修改。我不认为这个问题应该被当作一个骗子来解决,因为我认为这个问题或问题并不完全相同,而是一个变体。但如果它违反规则,那么我可以接受。大胆试试吧。 PS PS:无法编辑我的问题,所以我不得不把链接信息放在这里。 ://
      • 没问题,为您进行了编辑。我会说他们几乎是同一个问题。如果足够多的社区同意,它将作为骗子关闭,但否则将保持开放。
      猜你喜欢
      • 1970-01-01
      • 2016-03-03
      • 2011-09-18
      • 2015-05-27
      • 2013-05-20
      • 2018-10-17
      • 1970-01-01
      • 1970-01-01
      • 2021-05-26
      相关资源
      最近更新 更多