2017-07-07 102 views
0
$folders = Get-ChildItem | where {$_.Attributes -match 'Directory'} 
foreach ($items in $folders) 
{ 
$type = $items.name 
$cat = $cat + "," + "$type/*.$type 
} 
$cat 

时如何删除多余的逗号,而是它增加了一个额外的逗号我了解,由于脚本是怎么写这将导致它添加额外的逗号。我试图弄清楚是否有另外一种方法来写这个删除额外的逗号。串联这应该是打印文本,文本字符串

这是写有,因为从我的头顶,似乎简单,因为一切都在一个变量,哪些被传递到工程以及在这种情况下级联。

+0

还没有一个Windows电脑很方便,但我认为'$ cat = $ folders |选择 - 属性名称| '加入',''? – smarx

+0

@smarx将这个去foreach语句里面?如果我把这种说法本身我上-join部分说:“表达式只能作为管道的第一要素” – adobesmurf

+0

啊错误,对不起。现在在我的Mac上安装PowerShell来弄清楚。 :-) – smarx

回答

0

试试这个:

$cat = (Get-ChildItem | where {$_.Attributes -match 'Directory'}).Name -join "," 

编辑

我想了解的评论和问题编辑。也许这是你想要的?

(gci -dir) | select {"$($_.Name)/*.$($_.Name)"} 

EDIT 2

我不擅长PowerShell的,但把他们放在一起,至少这似乎工作:

$cat = ((gci -dir -name) | select @{Name="Item";Expression={"$($_)/*.$($_)"}}).Item -join "," 

编辑3

这终于开始看起来像一个很好的解决方案:

$cat = ((gci -dir -name) | foreach {"$($_)/*.$($_)"}) -join "," 
+0

这样做的工作,但我用的变量从它会和,将不再工作了。我能够简化它,并改变了他的问题来反思。 – adobesmurf

+0

什么?我无法理解这两句话。我看到你的编辑,但我不确定你想要做什么。你能给出一个样本输出吗?在主文件夹 – smarx

+0

两个文件夹名为css和一个叫JS 试图输出中这个CSS/*。CSS,JS/*。JS – adobesmurf

1

如果你在一个新的PowerShell:

(Get-ChildItem -Directory) -join ', ' 

(gci -dir) -join ', ' 

旧/更严重:

(Get-ChildItem | Where-Object { $_.PsIsContainer } | Select-Object -ExpandProperty Name) -join ', ' 

因为何不:

$OFS=', ';"$(gci -di)"