首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ForEach-Object中的意外标记in

ForEach-Object中的意外标记in
EN

Stack Overflow用户
提问于 2015-07-08 19:13:51
回答 2查看 2.7K关注 0票数 2

查找此ForEach-Object的适当格式。我正在读一本关于PowerShell简介的书。书中的一个例子如下,但这个例子不起作用。

代码语言:javascript
复制
$TEXTfile = $other = 0
ForEach-Object ($file in (Get-Childitem C:\PSLearn) {
  switch ($file.extension) {
    ".txt"  {$TEXTfile++}
    default {$other++}
  }
}
#Display results
"$TEXTfile text files"
"$other other files"

返回的错误为:

表达式或语句中的意外标记' in‘。

(<name> in <collection>)部分的正确格式是什么?

在我看来,在(之前的开场白$file似乎是错误的,因为我没有看到匹配的关闭),但这正是书中的例子。

EN

回答 2

Stack Overflow用户

发布于 2015-07-08 22:51:04

foreachForEach-Object不同循环结构。后者用于处理管道输入,前者用于迭代列表,不能从管道中读取或写入管道(尽管有变通办法)。

foreach循环如下所示:

代码语言:javascript
复制
foreach ($item in $list) {
  # do stuff with $item
}

ForEach-Object循环通常如下所示:

代码语言:javascript
复制
... | ForEach-Object {
  # do stuff with current object variable $_
} | ...

不过,您可以在一定程度上使用foreach循环来模拟ForEach-Object循环:

代码语言:javascript
复制
ForEach-Object -InputObject $list {
  # do stuff with $_
}

然而,循环变量仍然是“当前对象”自动变量 ($_)。

票数 2
EN

Stack Overflow用户

发布于 2015-07-08 19:29:45

这对我来说很管用:

代码语言:javascript
复制
$TEXTfile = $other = 0
ForEach ($file in Get-ChildItem  C:\temp){
     switch ($file.extension) {
    ".txt"  {$TEXTfile++}
    default {$other++} } }
 #Display results
 "$TEXTfile text files"
 "$other other files"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31301667

复制
相关文章

相似问题

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