在PowerShell中处理文件名和foldernames中的括号

时间:2017-03-28 09:23:48

标签: powershell rename filenames brackets

我有一个文件夹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 ]的多个文件或文件夹的脚本操作时,我似乎无法弄清楚如何处理这些数据

任何人都有任何想法如何使这项工作? 如果我能以更顺畅的方式编写这个脚本,请随时给我提示。

1 个答案:

答案 0 :(得分:2)

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