我有一个文件夹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 ]
的多个文件或文件夹的脚本操作时,我似乎无法弄清楚如何处理这些数据
任何人都有任何想法如何使这项工作? 如果我能以更顺畅的方式编写这个脚本,请随时给我提示。
答案 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