powershell - 在 PowerShell 中处理文件名和文件夹名中的括号

标签 powershell rename filenames brackets

我有一个文件夹 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/

相关文章:

powershell - 模块自动加载是否意味着可靠?

powershell - 错误:An attempt was made to add an object to the directory with a name that is already in use

mongodb - 如何重命名 mongodb 中的嵌套键

rename_if() 和 starts_with() 为某些列添加前缀

.htaccess - 文件名中的 %20,浏览器会看到空格。如何避免这种情况?

python - 如何通过 PowerShell 读取 python 中的文本文件? window 10

node.js - 如何在PowerShell中取消 “Terminate batch job (Y/N)”确认?

mysql - 如何重命名 mariaDB 中的列名

ant - 如何获取ant build xml文件自己的名字?

windows - 使用 8 个字母的过程有什么好处?