当我尝试从文件夹中读取文本文件时,我发现了一些有趣的东西:
$files = Get-ChildrenItem "C:\MyFolder" -Recursive | ?{$_.Extension -like '.txt'}
foreach ($file in $files) {
[string]fileFullName = $file.FullName
$content = Get-Content -Path $fileName
....
}
如果文件名包含[和]字符,我遇到了一些例外情况,例如a [1] .txt。
我猜每个东西都是PS中的对象。因此,据我所知,文件名中的[..]可能被视为索引访问。有没有办法用括号处理文件?
答案 0 :(得分:1)
您想要-LiteralPath
:
$files = Get-ChildItem "C:\MyFolder" -Recurse | ? { $_.Extension -like '.txt' }
foreach ($file in $files) {
[string]$fileFullName = $file.FullName
$content = Get-Content -LiteralPath $fileFullName
$content
}
从详细的帮助(),您将看到:
-LiteralPath 指定项目的路径。与Path不同,LiteralPath的值与键入的完全一样。没有人物 解释为通配符。如果路径包含转义字符, 用单引号将其括起来。单引号告诉 Windows PowerShell不会将任何字符解释为转义 序列。