【发布时间】:2019-05-25 01:18:57
【问题描述】:
我几乎没有 powershell 经验,但我用它作为一种手段来替换 FAT32 文件名中可能有问题的字符,例如: , . / ' : 等等。
我发现一篇文章提出使用 rename-item -NewName 命令,该命令在包含满足上述条件的文件的特定目录中运行良好,但在高于此级别使用时,我不能弄清楚如何使脚本完全递归。
我想替换文件扩展名之外的空格、撇号、句点实例和音乐库文件夹中音轨文件名中的美元符号,该文件夹的布局如下**,从 music 运行 powershell 脚本strong> 文件夹以点击其内部和下方的所有内容:
X:\home\audio\**music**\[artist_here]\[album_here]\FILE.mp3
有人可以解释完成此操作的正确语法吗?
我也尝试过使用路径和/s:
dir X\pathnamehere\ /s | rename-item -NewName {$_.name -replace " ","_"}
但收到另一个错误:
dir : Second path fragment must not be a drive or UNC name.
Parameter name: path2
At line:1 char:1
+ dir X:\home\Audio\Music\ /s | rename-item -NewName {$_.name -repla ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (X:\home\Audio\Music:String)
[Get-ChildItem], ArgumentException
+ FullyQualifiedErrorId :
DirArgumentError,Microsoft.PowerShell.Commands.GetChildItemCommand
dir | rename-item -NewName {$_.name -replace " ","_"}
运行时
dir | rename-item -NewName {$_.name -replace " ","_"}
在要重命名的文件所在的多个级别上,对于 \music 中的每个目录,我都会收到以下 错误:
"rename-item : Source and destination path must be different."
+ dir | rename-item -NewName {$_.name -replace " ","_"}
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : WriteError:
(X:\home\Audio\Music\artistname:String) [Rename-Item], IOException
+ FullyQualifiedErrorId :
RenameItemIOError,Microsoft.PowerShell.Commands.RenameItemCommand
谢谢!
附:如果这可以通过更简单的命令提示符批处理文件来完成,请随时赐教。
【问题讨论】:
标签: windows powershell batch-file