【发布时间】: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 仅删除您调用它的字符串的前导和尾随空格。所以你可以修剪“a
file”,你会得到“a file”。只删除最后一个字符。
标签: powershell foreach filenames trim get-childitem