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)
Move-Item -literalpath "D:\[Copy].log" -destination "D:\WithoutBracket.txt"
Run Code Online (Sandbox Code Playgroud)
将literalpath开关与Move-Item cmdlet一起使用[而不是使用rename-item cmdlet]