首页 > 解决方案 > Powershell 构建数组,每个项目换行

问题描述

使用Get-ChildItem我已经提取了一个符合条件的文件列表,然后split是其中的一部分,Basename并希望使用该名称的该部分构建一个数组。我可以成功地做到这一点,除了数组返回长字符串。我希望数组的每个部分都返回一个新行。

脚本:

$files = GCI "\\Paths" -Recurse | Where-Object {$_.LastWriteTime -ge (Get-Date).Adddays(-22)}

$name = ""

foreach($file in $files){
    $file = $file.basename.Split(".")[0]
        $array += $file    
}

我还尝试了以下方法,但没有成功:

$files = GCI "\\Paths" -Recurse | Where-Object {$_.LastWriteTime -ge (Get-Date).Adddays(-22)}
    
    $name = ""
    
    foreach($file in $files){
        $file = $file.basename.Split(".")[0]
            $array+= $file -split "`n"        
    }

调用时的当前结果$array

file01file02file03file04

调用时的期望结果$array

file01    
file02    
file03 
file04

标签: arrayspowershell

解决方案


该字符串被返回,因为$array它不是一个数组。它是在赋值时输入的,它的第一个赋值是一个字符串。因此,它不断向该字符串附加新值。

您可以改为执行以下操作:

$array = foreach($file in $files){
    $file.basename.Split(".")[0]
}

在 foreach 语句中输出迭代值时,可以将该语句输出捕获到变量中。每个值都是数组的一个元素。

顺便说一句,将元素添加到数组的+=语法效率低下,因为每次检索当前数组的所有内容后都会创建一个新数组。


推荐阅读