在 PowerShell 中处理文件名和文件夹名中的括号
Handling brackets in filenames and foldernames in PowerShell
我有一个文件夹 E:\Tjuven,其中有几个文件夹以 Andreas 开头并包含 [ and ]
。
在所有这些文件夹中,我有 2 个文件要重命名为它们文件夹的名称。这些文件的名称中还包含 [ and ]
。
所以我写了这个:
$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"
}
}
当文件夹中没有 [ or ]
时,这非常有效。
我知道我可以使用 literalpath 来查找文件夹等,但我似乎无法弄清楚在对多个文件或文件夹执行脚本操作时如何处理这些数据,其中包含特殊字符 [ and ]
.
有人知道如何使这项工作有效吗?
如果我能把这个脚本写得更流畅,也欢迎大家多多指教
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
我有一个文件夹 E:\Tjuven,其中有几个文件夹以 Andreas 开头并包含 [ and ]
。
在所有这些文件夹中,我有 2 个文件要重命名为它们文件夹的名称。这些文件的名称中还包含 [ and ]
。
所以我写了这个:
$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"
}
}
当文件夹中没有 [ or ]
时,这非常有效。
我知道我可以使用 literalpath 来查找文件夹等,但我似乎无法弄清楚在对多个文件或文件夹执行脚本操作时如何处理这些数据,其中包含特殊字符 [ and ]
.
有人知道如何使这项工作有效吗? 如果我能把这个脚本写得更流畅,也欢迎大家多多指教
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