目录foreach扩展powershell

时间:2016-11-25 14:35:18

标签: powershell foreach directory

我需要检查一个文件夹并创建一个包含所有不同扩展名的数组 (这部分很好)

$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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

因为总有几种方法:

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