2017-07-07 49 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)"