2016-11-25 58 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名称的错误,但它会工作,谢谢! –