我有一个文件夹 E:\Tjuven,其中有几个以 Andreas 开头并包含 [ 和 ]
的文件夹。
在所有这些文件夹中,我有 2 个文件,我想将它们重命名为其文件夹的名称。这些文件的名称中还包含 [ 和 ]
。
所以我写了这个:
$folderslist = Get-ChildItem -Path E:\Tjuven -Filter Andreas*
$folders = $folderslist.Name
ForEach ($folder in $folders) {
$fillista = Get-ChildItem -Path E:\Tjuven\$folder
$filer = $fillista.Name
ForEach ($fil in $filer) {
$filslut = $fil.Substring($fil.Length-3)
Rename-Item "E:\Tjuven\$folder\$fil" "E:\Tjuven\$folder\$folder.$filslut"
}
}
当文件夹中没有 [ 或 ]
时,此功能非常有效。
我知道我可以使用literalpath来查找文件夹等,但我似乎无法弄清楚在使用特殊字符[和]
对多个文件或文件夹编写操作脚本时如何处理这些数据> 在他们之中。
有人知道如何实现这项工作吗? 如果我可以更流畅地编写这个脚本,也请随时给我提示。
最佳答案
Get-ChildItem 和 Rename-Item 使用方括号作为通配符。使用 -LiteralPath 而不是 -Path:
$root = "F:\test"
Get-ChildItem -Path $root | % {
$dirName = $_.Name
$files = Get-ChildItem -LiteralPath $_.FullName
$files | % {
Rename-Item -LiteralPath $_.FullName -NewName "$dirName$($_.Extension)"
}
}
说明 here
关于powershell - 在 PowerShell 中处理文件名和文件夹名中的括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43065645/