我列出了目录中的文件及其纪元时间(在Linux机器上使用,用于集中文件管理)。
我遇到问题,要在两个字段之间用逗号加入。
文件夹结构
C:\ TEMP \测试
test1.txt的
的test2.txt
预期产出:
File: test1.txt,1518167449
File: test2.txt,1518167449
我拥有以下所有信息:
(Get-ChildItem C:\temp\test | select name, @{name='lastwritetime';Expression={[int][double]::Parse((Get-Date $_.LastWriteTime -UFormat %s))}})
给出输出
Name lastwritetime
test1.txt 1518167449
test2.txt 1518167455
但是我无法加入他们,所以他们看的格式正确(使用逗号加入)。
答案 0 :(得分:1)
你可以这样做:
$Files = (Get-ChildItem C:\temp\test | select name, @{name='lastwritetime';Expression={[int][double]::Parse((Get-Date $_.LastWriteTime -UFormat %s))}})
$Files | ForEach-Object {
"$($_.Name),$($_.LastWriteTime)"
}
这使用一个ForEach-Object
循环遍历每个文件并输出一个字符串。该字符串使用子表达式$( )
来允许我们访问我们想要的两个属性,并在字符串中用逗号插入它们。
请注意,您不必使用$Files
变量,而是可以在ForEach-Object
的末尾链接Select
命令,但因为该命令已经很长这使代码更清晰。
另一种选择是:
$Files | ForEach-Object {
"{0},{1}" -f $_.Name,$_.LastWriteTime
}
由您决定更具可读性。
您还可以考虑使用ConvertTo-CSV
cmdlet,尽管这也会在每个值周围添加引号。如果您的最终目的地是CSV,但使用它或Export-CSV
更清洁/更简单。