PowerShell输出格式化问题:如何将表格格式文件信息写入文本文件
问题:PowerShell无法将表格格式的文件信息写入文本文件
我正在学习PowerShell,需要完成三项任务:
- A)以表格格式在屏幕显示指定文件夹内文件
- B)创建新文本文件
- C)将A的表格格式信息写入新文件
目前前两项已完成,但C项存在问题:文本文件仅显示文件夹名称,未包含Length和LastWriteTime的表格格式内容。我的代码如下:
Get-ChildItem C:\Users\LabAdmin\Desktop\Folder1\ | format-table Name, Length, LastWriteTime -AutoSize New-Item C:\Users\LabAdmin\Desktop\Folder1\ -Name 'NewFile.txt' -ItemType File Get-ChildItem C:\Users\LabAdmin\Desktop\Folder1\ | Set-Content C:\Users\LabAdmin\Desktop\Folder1\NewFile.txt
问题原因
Set-Content直接接收Get-ChildItem输出的FileInfo/DirectoryInfo对象时,默认只会写入对象的名称(调用ToString()方法的结果),不会保留你用Format-Table生成的表格格式。
解决方案
要将屏幕上显示的表格格式完整写入文件,需要用Format-Table配合Out-File命令,它会将格式化后的输出转换成和屏幕一致的文本格式:
# A)屏幕显示表格格式文件信息 Get-ChildItem C:\Users\LabAdmin\Desktop\Folder1\ | Format-Table Name, Length, LastWriteTime -AutoSize # B)创建新文件 New-Item C:\Users\LabAdmin\Desktop\Folder1\ -Name 'NewFile.txt' -ItemType File # C)将表格格式信息写入文件 Get-ChildItem C:\Users\LabAdmin\Desktop\Folder1\ | Format-Table Name, Length, LastWriteTime -AutoSize | Out-File C:\Users\LabAdmin\Desktop\Folder1\NewFile.txt -Encoding utf8
补充说明
-Encoding utf8参数用于避免中文或特殊字符出现乱码问题;- 如果需要更灵活的输出格式(比如CSV),可以用
Get-ChildItem | Select-Object Name, Length, LastWriteTime | ConvertTo-Csv | Set-Content,但这种格式和屏幕表格不同,适合后续数据处理。
内容的提问来源于stack exchange,提问作者Showtunes
相关产品推荐
相关产品推荐

