2016-11-25 61 views
0

我需要檢查一個文件夾,使所有的不同的擴展 數組(這部分去WEL)目錄的foreach擴展的PowerShell

$dir = dir C:\Users\seppe\Desktop\School\Scripting\Lab06\scripting_Lab06_opdr3 | Group-Object -property extension | Format-Table -Property Name 

現在這裏的問題是:這個數組我需要做一個製作不同文件夾的foreach。文件夾的名稱需要是不同類型的文件(如:DOC我有這樣的:

foreach($_ in $dir){ 
mkdir C:\Users\seppe\Desktop\School\Scripting\Lab06\scripting_Lab06_opdr3\$_ 
} 

,但我得到5(在我來說,我只需要3(因爲療法3種類型的文件,在文件夾))文件夾,但絲毫這個名字:

Microsoft.PowerShell.Commands.Internal.Format.FormatEndData 
Microsoft.PowerShell.Commands.Internal.Format.FormatEntryData 
Microsoft.PowerShell.Commands.Internal.Format.FormatStartData 
Microsoft.PowerShell.Commands.Internal.Format.GroupEndData 
Microsoft.PowerShell.Commands.Internal.Format.GroupStartData 

回答

0

因爲總有幾個PowerShell的方式:

cd "C:\Users\seppe\Desktop\School\Scripting\Lab06\scripting_Lab06_opdr3\" 
$Extensions = (dir . -file | %{$_.Extension} | Sort -unique).Trimstart(".") 
$Extensions | %{If (!(Test-Path $_)){MD $_}} 
+0

這確實有點準確,因爲現在我有一個dir PNG而不是.PNG –

0

您也需要到指定的Name屬性$ _對象時創建的文件夾(因爲這包含擴展)

mkdir C:\Users\seppe\Desktop\School\Scripting\Lab06\scripting_Lab06_opdr3\$_.Name 

或者選擇只有擴展當您創建數組入手:

$dir = Get-ChildItem C:\Users\seppe\Desktop\School\Scripting\Lab06\scripting_Lab06_opdr3 | Select-Object -ExpandProperty Extension 
+0

然後我得到的輸出相同,但與.NAME在它的結束 –

+0

更改爲'$($ _。Name)',或者嘗試我添加的第二個選項。 –

+0

發現問題,因爲你謝謝,當我做一個組對象,然後它不再工作了!所以我會得到dupplicated名稱的錯誤,但它會工作,謝謝! –