我想从文件名中递归删除方括号

时间:2019-04-16 16:29:19

标签: powershell rename

例如,我在包含方括号的目录中有很多文件:

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.

只想删除方括号,而不是中间的所有内容!

2 个答案:

答案 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 '\]','' }