首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将ForEach与Get-ChildItem -recurse一起使用

将ForEach与Get-ChildItem -recurse一起使用
EN

Stack Overflow用户
提问于 2012-07-20 03:49:43
回答 3查看 97.4K关注 0票数 18

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

代码语言:javascript
复制
$table = get-childitem -recurse | where {! $_.PSIsContainer} | Format-Table Name, Length

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

如果我尝试按原样输出$table,它看起来很完美,所有文件都有两列数据。如果我尝试单步执行foreach (类似于上面),我会得到"Unable to index into an object of type Microsoft.PowerShell.Commands.Internal.Format.FormatEndData."错误消息。

我做错了什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-07-20 04:03:52

我完全不明白您为什么要逐步浏览格式化的数据。但实际上,$table只是一个字符串集合。因此,您可以执行以下操作:

代码语言:javascript
复制
$table = get-childitem -recurse | where {! $_.PSIsContainer} | Format-Table Name, Length

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

但我不知道你为什么要这么做。如果您正在尝试对文件中的数据执行某些操作,您可以尝试这样做:

代码语言:javascript
复制
$files = get-childitem -recurse | where {! $_.PSIsContainer}
foreach ($file in $files)
{
    $file.Name
    $file.length
}
票数 30
EN

Stack Overflow用户

发布于 2012-07-20 03:59:10

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

代码语言:javascript
复制
$table = get-childitem -recurse | where {! $_.PSIsContainer}
foreach($file in $table){
    $file.Name
    $file.FullName
}
票数 12
EN

Stack Overflow用户

发布于 2018-09-12 01:21:57

我刚刚清理了一些个人资料,在我的过程中发现了这篇文章,我想我应该分享一下我是如何循环get-childitem的结果的(ls只是gci的别名?)。希望这对某个地方的人有所帮助。

代码语言:javascript
复制
$blob = (ls).name 
foreach ($name in $blob) { 
get-childitem "D:\CtxProfiles\$name\Win2012R2v4\UPM_Profile\AppData\Local\Google\Chrome\User Data\Default\Default\Media Cache\f_*" -erroraction 'silentlycontinue'|remove-item -force -recurse -confirm:$false 
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11568221

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档