使用包含括号的名称读取文本文件?

时间:2014-05-09 20:30:53

标签: powershell-v2.0

当我尝试从文件夹中读取文本文件时,我发现了一些有趣的东西:

 $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中的对象。因此,据我所知,文件名中的[..]可能被视为索引访问。有没有办法用括号处理文件?

1 个答案:

答案 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不会将任何字符解释为转义   序列。