当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 在 PowerShell 中将文件读入字符串 [3 种方法]

作者:精品下载站 日期:2024-12-14 05:25:59 浏览:12 分类:玩电脑

在 PowerShell 中将文件读入字符串 [3 种方法]


[玩转系统] 在 PowerShell 中将文件读入字符串 [3 种方法]

使用 Get-Content Cmdlet

我们可以使用 Get-Content cmdlet 将文件的内容读取到字符串中。

使用 Get-Content Cmdlet 读取单个文件

要在 PowerShell 中将单个文件读入字符串:

  • 使用带有 -Raw 参数的 Get-Content cmdlet 将文件的内容读取到字符串中。
  • 使用 .GetType() 方法检查结果的数据类型。

读取单个文件:

$file = "D:\abc.txt"
$content = Get-Content -Path $file -Raw
($content.GetType()).Name

输出 :

String

PowerShell 中的 Get-Content cmdlet 读取文件或其他输入和输出对象的内容,例如另一个 cmdlet 的输出。该 cmdlet 以字符串数组的形式返回内容。我们可以用它来读取配置文件、日志文件、CSV 文件或任何其他文本文件。

例如,我们为 Get-Content cmdlet 的 -Path 参数提供了 file 值来读取它。默认情况下,Get-Content 将文件或对象的内容作为字符串数组返回,文件或对象的每一行一个字符串。

使用 -Raw 参数,Get-Content cmdlet 将文件或对象的全部内容作为单个字符串返回。因此,要将 file 作为单个字符串读取,我们使用 Get-Content cmdlet 的 -Raw 参数并将结果存储在内容变量。

为了检查 content 的类型,我们使用 GetType() 方法来确定返回 Type 对象的对象的类型。然后,我们使用其 .Name 属性在控制台上显示类型的名称。

使用带有 forreach 循环的 Get-Content Cmdlet 读取多个文件

要在 PowerShell 中将多个文件读取到一个字符串中,请在 Get-Content cmdlet 的输出中使用 -join 参数。

读取多个文件:

$files = 'D:\a.txt', 'D:\b.txt', 'D:\c.txt'
$content = (Get-Content -Path $files -Raw) -join '`n'
($content.GetType()).Name

输出 :

String

我们可以使用 Get-Content cmdlet 读取多个文件。为此,我们将所有用逗号分隔的文件存储在 files 变量中,并使用我们在解释用于读取单个文件的代码部分时讨论的 Get-Content cmdlet 来读取它们。文件转换为字符串。

PowerShell 中的 -join 参数将数组或集合的元素连接成单个字符串。例如,我们将 Get-Content cmdlet 的输出与 n 运算符连接起来,该运算符使用新行分隔符连接文件行。然后我们将 GetType() 方法应用于 content` 以检查其数据类型。

并不是说 -Raw 参数仅适用于 PowerShell 版本 3.0+。

对于 PowerShell 版本 2.0+

要在 PowerShell 2.0+ 版本中将文件读入字符串,请将上述代码的 -Raw 参数替换为 Out-String cmdlet 和管道(|) 运算符。

将 Get-Content 与 Out-String Cmdlet 结合使用:

$file = "d:\abc.txt"
$content = (Get-Content -Path $file) | Out-String
($content.GetType()).Name

输出 :

String

我们在上述代码部分讨论了 Get-Content cmdlet。在本部分中,我们使用 Out-String cmdlet 而不是 -Raw 参数将文件读入字符串。

Out-String cmdlet 将命令或脚本的输出转换为字符串。它获取命令或脚本的输出并将其连接成单个字符串。例如,我们将 Get-Content cmdlet 的输出传递给 Out-String cmdlet,以将 file 作为单个字符串读取。

请注意,-Out-String cmdlet 比 -Raw 参数更灵活,因为我们可以将它与任何 cmdlet 或脚本一起使用。它还可以读取多个文件,而无需 -join 参数:

将 Get-Content 与 Out-String Cmdlet 结合使用:

$files = 'D:\a.txt', 'D:\b.txt', 'D:\c.txt'
$content = (Get-Content -Path $files) | Out-String
($content.GetType()).Name    

输出 :

String

使用 [System.IO.File]::ReadAllText() 方法

要在 PowerShell 中将文件读入字符串,请使用 [System.IO.File]::ReadAllText() 方法。

使用 ReadAllText() 方法:

$file = "d:\abc.txt"
$content = [IO.File]::ReadAllText($file)
($content.GetType()).Name

输出 :

String

System.IO.File 是 .NET Framework 中的静态类,它提供了在 PowerShell 中处理文件和目录的各种方法,例如读取和写入文件、创建、移动和删除文件等。

ReadAllText() 方法将文件作为参数并以字符串形式返回其内容。我们使用该方法读取 file 的内容并将它们作为单个字符串存储在 content 变量中。为了验证文件的数据类型,我们在使用 Get-content 的代码部分中讨论的 content 上应用了 GetType() 方法cmdlet。

使用 [System.IO.File]::ReadAllText() 方法和 foreach 循环读取多个文件

要读取多个文件,请为每个文件附加 [System.IO.File]::ReadAllText() 的结果,并将其包装在 foreach 块内。

读取多个文件:

$files = 'D:\a.txt', 'D:\b.txt', 'D:\c.txt'
$contents = ""
foreach ($file in $files) {
    $contents += [System.IO.File]::ReadAllText($file)
}
($contents.GetType()).name

输出 :

String

System.IO.File 没有内置方法来读取多个文件。我们使用了 foreach 循环。在循环内,我们使用 ReadAllText() 方法从 files 集合中读取每个 file 并将结果连接到 contents 中变量。最后,我们使用在控制台上打印 StringGetType() 方法检查了 contents 的数据类型。

将变量表示法与 Out-String Cmdlet 结合使用

要将文件作为单个字符串读取,请使用变量表示法。

将变量表示法与 Out-String Cmdlet 结合使用:

$content = ${d:\abc.txt} | Out-String
($content.GetType()).Name

输出 :

String

在变量表示法中,我们将文件路径括在大括号中,前面加上美元 ($) 符号。 它返回一个数组对象,我们使用 Out-String cmdlet 将其转换为单个字符串。然后我们使用 GetType() 方法验证了 content 的数据类型。

同样,要将多个文件读入单个字符串:

将变量表示法与 Out-String Cmdlet 结合使用:

$content = ${d:\a.txt}, ${d:\b.txt} | Out-String
($content.gettype()).Name

输出 :

String

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯