使用ForEach和get-child-Recurse的问题

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (42)

我试图在特定的子文件夹结构中获取文件的递归列表,然后将它们保存到一个表中,以便我可以使用foreach循环来处理每一行。

$table = get-childitem -recurse | where {! $_.PSIsContainer} | Format-Table Name, Length

foreach ($row in $table)
{
  $row[0]
  $row[1]
}

如果我试图输出$table实际上,它看起来很完美,所有文件都有两列数据。"Unable to index into an object of type Microsoft.PowerShell.Commands.Internal.Format.FormatEndData."错误信息。

我做错什么了?

提问于
用户回答回答于

我不知道你为什么要一步步地处理格式化的数据。但事实上,$table只是字符串的集合。因此,你可以进行以下操作:

$table = get-childitem -recurse | where {! $_.PSIsContainer} | Format-Table Name, Length

foreach ($row in $table)
{
  $row
}

但我不知道你为什么要这么做。如果你想对文件中的数据做些什么,你可以尝试这样做:

$files = get-childitem -recurse | where {! $_.PSIsContainer}
foreach ($file in $files)
{
    $file.Name
    $file.length
}
用户回答回答于

在你完全完成数据处理之前,不要使用任何格式命令。格式命令将所有内容转换为字符串,因此你将丢失原始对象。

$table = get-childitem -recurse | where {! $_.PSIsContainer}
foreach($file in $table){
    $file.Name
    $file.FullName
}

所属标签

可能回答问题的人

  • Hanzo

    6 粉丝0 提问7 回答
  • Richel

    9 粉丝0 提问3 回答
  • mariolu

    31 粉丝0 提问2 回答
  • 上云小秘书

    15 粉丝0 提问2 回答

扫码关注云+社区

领取腾讯云代金券