如何将文件列表获取到Powershell数组中



我想在Powershell变量中获得一个文件列表,以便在后续代码中使用。

文件:文件1.csvfile2.csv

$sourceFiles = Get-ChildItem .file*.csv

但我得到的输出是:

Mode                 LastWriteTime         Length Name                                                                       
----                 -------------         ------ ----                                                                       
-a----         4/10/2022   1:52 AM             31 file1.csv                                                                  
-a----         4/10/2022   1:52 AM             31 file2.csv  

我正在尝试获取输出$sourceFiles = "file1.csv","file2.csv"

最好的方法是什么?

您应该将-Name添加到Get-ChildItem命令中。

$sourceFiles = Get-ChildItem .file*.csv -Name
Write-Host $sourceFiles

根据文件-Name完成工作。

仅获取该位置中项目的名称。输出是一个字符串对象,可以通过管道发送到其他命令。允许使用通配符。

这些天我需要这个,最后我写了一个PowerShell脚本:

$InputFolder = $args[0]
$OutputFile = $args[1]
$BinStream = [System.IO.FileStream]::new($OutputFile,[System.IO.FileMode]::OpenOrCreate)
$BinWriter = [System.IO.BinaryWriter]::new($BinStream)
$InputFolder
| Get-ChildItem
| Sort-Object -Property LastWriteTime
| ForEach-Object {
$Data = $_ | Get-Content -AsByteStream -Raw
$BinWriter.Write($Data)
}
$BinWriter.Close()

您可以按不同的对象属性进行排序,也许是创建的日期时间,LastWriteTime恰好是我需要的。我不能按名称排序的原因是我的文件名没有用零填充的索引后缀。

可能有一种更直接的方法,不需要深入到.NET类中,但我没有太多的PowerShell技能,所以无论我做了什么来满足我的即时需求,都是通过快速谷歌搜索和在线浏览PowerShell参考的结果。

最新更新