【问题标题】:Trim File Name of Trailing White Spaces for Child Items - Powershell修剪子项的尾随空格的文件名 - Powershell
【发布时间】:2021-03-17 03:05:38
【问题描述】:

希望有人可以帮助我。

我目前运行一个脚本来清理文件名,方法是:

get-childitem -recurse | dir -Filter *.mp4 | Rename-Item -NewName { $_.BaseName.replace('Oldname','NewName') + $_.Extension }

它有很多额外的单词和东西,而且效果很好。我正在使用这种方法制作一个新脚本,但每个文件的末尾都有一个尾随空格。

据我所知,Trim 应该做我需要的:

.Trim()

据我了解,它应该删除所有前导和尾随空格。

我正在考虑删除所有空格,但问题是某些文件名将包含多个由空格分隔的单词。

所以我认为循环可以解决问题,但由于我还是 Powershell 的新手,所以我无法完全解决。

长话短说,我希望对目录中的所有文件(特别是 MP4 和 MKV)运行递归扫描,然后对目录中的每个文件应用修剪,以便删除任何尾随空格。

对此的任何帮助将不胜感激!


Doug Maurer 给出了完美的答案。我只需要在命令末尾添加修剪,我想我只是把它放错了,然后认为我需要循环它。答案要简单得多。

在任何人说话之前,我知道这不是最优雅的脚本,但我会做我需要做的事情。它用于查找文件名中的特定单词,并将它们删除并替换为空。但是,一旦完成,有时我会留下一个尾随空格。

通过在末尾添加修剪,在重新添加扩展之前,它为我的用例完美地删除了空间。

get-childitem -recurse | dir -Filter *.mp4 | Rename-Item -NewName { $_.BaseName.replace('Name1','').replace('Name2','').replace('Name3','').replace('Name4','').replace('Name5','').replace('Name6','').replace('Name7','').replace('Name8','').Trim() + $_.Extension }

Doug 建议编辑删除 DIR,因为它是不必要的:

Get-ChildItem -Recurse -Filter *.mp4 | Rename-Item -NewName { $_.BaseName.replace('Name1','').replace('Name2','').replace('Name3','').replace('Name4','').replace('Name5','').replace('Name6','').replace('Name7','').replace('Name8','').Trim() + $_.Extension }

【问题讨论】:

  • Trim 仅删除您调用它的字符串的前导和尾随空格。所以你可以修剪“afile”,你会得到“afile”。只删除最后一个字符。

标签: powershell foreach filenames trim get-childitem


【解决方案1】:

你那里没有修剪,所以我不能说为什么你的尝试没有奏效。我可以说的是,您不需要两个 DIR 命令(dir 是 Get-ChildItem 的别名)。您的命令似乎缺少将扩展名添加回名称和最后一个花括号的部分。以下将按照您的描述修剪基本名称。

Get-ChildItem -Recurse -Filter *.mp4 |
    Rename-Item -NewName {$_.BaseName.replace('Oldname','NewName').Trim() + $_.Extension}

【讨论】:

  • 嗨,Doug,我不知道 DIR 是别名,很高兴知道。我确实有最后一个花括号并重新添加扩展名,但我忘了在我的问题中添加它。我现在将对其进行编辑。我想多了。我需要做的就是在命令结束时放置 trim。感谢您指出了这一点。我将在我的问题中发布我完成的命令,以便人们将来可以根据需要使用它。
猜你喜欢
  • 1970-01-01
  • 2014-05-07
  • 2010-11-26
  • 1970-01-01
  • 1970-01-01
  • 2018-07-04
  • 2013-03-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多