我想在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参考的结果。