如何使用PowerShell删除文件名中的前导或尾随空格?
我基本上是尝试修剪()任何在名称末尾有前导或尾随空格的文件名。这是我目前掌握的密码如何使用PowerShell删除文件名中的前导或尾随空格?,powershell,trim,Powershell,Trim,我基本上是尝试修剪()任何在名称末尾有前导或尾随空格的文件名。这是我目前掌握的密码 $foldersToCheck = "$env:userprofile\documents", "$env:userprofile\pictures", "$env:userprofile\desktop" foreach ($folder in $foldersToCheck) { get-childitem -path $folder -re
$foldersToCheck = "$env:userprofile\documents", "$env:userprofile\pictures", "$env:userprofile\desktop"
foreach ($folder in $foldersToCheck) {
get-childitem -path $folder -recurse | foreach-object {
if ($_.name.startswith(" ") -or $_.name.endswith(" ")) {
$newName = $_.name.trim()
rename-item -path $_ -newName $newname
}
}
}
如果我创建了一个测试文件(c:\users\someusername\desktop\test.txt),那么我会收到这个错误
rename-item : Cannot rename because item at ' test.txt' does not exist.
At line:6 char:13
+ rename-item -path $_ -newName $newname
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [Rename-Item], PSInvalidOperationException
+ FullyQualifiedErrorId : InvalidOperation,Microsoft.PowerShell.Commands.RenameItemCommand
因此,它似乎找到了需要重命名的文件,但随后说它不存在。这里的问题是,PowerShell在尝试将文件名转换为可以绑定到的字符串时,仅将文件名解析为
$\ucode>
显式传递文件的完整路径,它将工作:
Rename-Item -Path $_.FullName -NewName $newname
或者,通过管道将$\u
文件对象连接到重命名项
,PowerShell将自动确定需要将$\u.FullName
绑定到重命名项
的-LiteralPath
参数:
$_ |Rename-Item -NewName $newname
您还可以将整个循环转换为单个管道,然后利用管道绑定表达式来处理-NewName
:
$foldersToCheck |Get-ChildItem -Recurse |Rename-Item -NewName { $_.Name.Trim() }
如果现有的名称
和-NewName
值相同,重命名项
无论如何只会保留文件:)工作起来很有魅力。谢谢大家!@神秘松饼太好了,不客气!如果有帮助,我还添加了一个管道示例:)