使用power shell重命名文件名中包含括号的文件

jus*_*inf 3 powershell powershell-2.0

我正在尝试重命名文件名中包含括号的文件.这似乎不起作用,因为powershell将[]视为特殊字符,并且不知道该怎么做.

我的计算机上有一个文件夹c:\ test.我希望能够浏览该文件夹并重命名文件的所有文件或部分.以下代码似乎有效,但如果文件中包含任何特殊字符,代码将失败:

Function RenameFiles($FilesToRename,$OldName,$NewName){

    $FileListArray = @()
    Foreach($file in Get-ChildItem $FilesToRename -Force -Recurse  | Where-Object {$_.attributes -notlike "Directory"})
    {
        $FileListArray += ,@($file)
    }

    Foreach($File in $FileListArray)
    {
        IF ($File -match $OldName )
        {
            $File | rename-item -newName {$_ -replace "$OldName", "$NewName" }
        }
    }
}

renamefiles -FilesToRename "c:\test" -OldName "testt2bt" -NewName "test"
Run Code Online (Sandbox Code Playgroud)

我确实找到了一个类似的问题:使用Powershell替换方括号,但我无法理解如何使用答案因为它只是一个解释错误的链接:

小智 11

对于多个文件,可以使用一行完成.

要删除支架,您应该尝试:

get-childitem | ForEach-Object { Move-Item -LiteralPath $_.name $_.name.Replace("[","")}
Run Code Online (Sandbox Code Playgroud)


Ang*_*wal 7

Move-Item -literalpath "D:\[Copy].log" -destination "D:\WithoutBracket.txt"
Run Code Online (Sandbox Code Playgroud)

literalpath开关与Move-Item cmdlet一起使用[而不是使用rename-item cmdlet]