例如,我在包含方括号的目录中有很多文件:
Filename 1 [12454365].txt
我尝试了以下脚本,但这给了我一个错误。
get-childitem -recurse | foreach { move-item -literalpath $_.name ($_.name -replace '\[.*\]', '')}
错误消息
move-item : A device attached to the system is not functioning.
只想删除方括号,而不是中间的所有内容!
答案 0 :(得分:1)
如果指定-Recurse
,则需要用FullName
指定文件,因为它的目标不是当前目录。
(Get-ChildItem -File -Recurse) | foreach {
$dest = Join-Path $_.DirectoryName ($_.Name -replace "[\[\]]")
Move-Item -LiteralPath $_.FullName $dest
}
此外,最好使用Rename-Item
来重命名文件。
(Get-ChildItem -File -Recurse) | Rename-Item -NewName { $_.Name -replace "[\[\]]" }
答案 1 :(得分:0)
我认为问题在于您正在更换方括号以及其中的所有内容。
Get-ChildItem * -Filter "*`[*`]*" | Rename-Item -NewName { $_.name -replace '\[','' -replace '\]','' }