Trim 子项目尾随空格的文件名 - Powershell
Trim File Name of Trailing White Spaces for Child Items - Powershell
希望有人能帮助我。
我目前 运行 一个清理文件名的脚本使用:
get-childitem -recurse | dir -Filter *.mp4 | Rename-Item -NewName { $_.BaseName.replace('Oldname','NewName') + $_.Extension }
它有大量额外的单词和内容,并且效果很好。我正在使用这种方法制作一个新脚本,但我在每个文件的末尾留下了尾随的白色 space。
据我所知,Trim 应该满足我的需要:
.Trim()
据我所知,它应该删除任何前导和尾随的白色 spaces。
我想只删除所有白色 space,但问题是某些文件名会有多个单词,由白色 space 分隔。
所以我认为循环可能会解决问题,但由于我还是 Powershell 的新手,所以我不能完全解决它。
长话短说,我希望 运行 对目录中的所有文件进行递归扫描,特别是 MP4 和 MKV,然后对目录中的每个文件应用 trim所以它会删除任何尾随的白色 spaces.
如有任何帮助,我们将不胜感激!
Doug Maurer 的完美回答。我只需要在我的命令末尾添加 trim ,我想我只是把它放错了,然后我想我需要循环它。答案要简单得多。
在任何人发言之前,我知道这不是最优雅的脚本,但我做了我需要的。它用于查找文件名中的特定单词,并将它们删除并替换为空。但是,一旦完成,有时我会留下尾随的白色 space.
通过在末尾添加 trim,在重新添加扩展之前,它完美地删除了 space 我的用例。
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 所以我不能说为什么你的尝试没有奏效。我能说的是您不需要两个 DIR 命令(dir 是 Get-ChildItem 的别名)。您的命令似乎缺少将扩展名添加回名称和最后一个花括号的部分。以下将 trim 您描述的基本名称。
Get-ChildItem -Recurse -Filter *.mp4 |
Rename-Item -NewName {$_.BaseName.replace('Oldname','NewName').Trim() + $_.Extension}
希望有人能帮助我。
我目前 运行 一个清理文件名的脚本使用:
get-childitem -recurse | dir -Filter *.mp4 | Rename-Item -NewName { $_.BaseName.replace('Oldname','NewName') + $_.Extension }
它有大量额外的单词和内容,并且效果很好。我正在使用这种方法制作一个新脚本,但我在每个文件的末尾留下了尾随的白色 space。
据我所知,Trim 应该满足我的需要:
.Trim()
据我所知,它应该删除任何前导和尾随的白色 spaces。
我想只删除所有白色 space,但问题是某些文件名会有多个单词,由白色 space 分隔。
所以我认为循环可能会解决问题,但由于我还是 Powershell 的新手,所以我不能完全解决它。
长话短说,我希望 运行 对目录中的所有文件进行递归扫描,特别是 MP4 和 MKV,然后对目录中的每个文件应用 trim所以它会删除任何尾随的白色 spaces.
如有任何帮助,我们将不胜感激!
Doug Maurer 的完美回答。我只需要在我的命令末尾添加 trim ,我想我只是把它放错了,然后我想我需要循环它。答案要简单得多。
在任何人发言之前,我知道这不是最优雅的脚本,但我做了我需要的。它用于查找文件名中的特定单词,并将它们删除并替换为空。但是,一旦完成,有时我会留下尾随的白色 space.
通过在末尾添加 trim,在重新添加扩展之前,它完美地删除了 space 我的用例。
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 所以我不能说为什么你的尝试没有奏效。我能说的是您不需要两个 DIR 命令(dir 是 Get-ChildItem 的别名)。您的命令似乎缺少将扩展名添加回名称和最后一个花括号的部分。以下将 trim 您描述的基本名称。
Get-ChildItem -Recurse -Filter *.mp4 |
Rename-Item -NewName {$_.BaseName.replace('Oldname','NewName').Trim() + $_.Extension}