You need to enable JavaScript to run this app. PowerShell 按自定义格式导出文件属性到文本文件的实现方法
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell 按自定义格式导出文件属性到文本文件的实现方法

问题根因
  • 执行首个命令生成空白文件:Write-Host的输出直接写入控制台宿主,不会进入PowerShell管道流,后续连接的Format-Table、Out-File无法获取到任何可处理的对象,最终只能生成空文件。
  • 执行第二个命令格式错乱:在脚本块内用逗号分隔三个属性时,PowerShell会将三个属性识别为独立的输出对象依次送入管道,重定向时每个对象单独占一行,无法合并为单条记录。
目标格式实现方案

方案1:手动拼接单行字符串(推荐,格式完全可控)

直接将每个文件的三个属性拼接为单个字符串后送入管道,从根源上避免对象拆分、表头冗余的问题:

gci -r | % {
    "$($_.Name) $($_.FullName) $($_.LastWriteTime)"
} | out-file output.txt -Encoding utf8

如果需要和示例里的短日期格式完全对齐,可以对LastWriteTime做格式化处理:

gci -r | % {
    # 按示例要求的格式输出时间,去掉冗余的星期、月份全称
    $time = $_.LastWriteTime.ToString('M/d/yyyy h:mm:ss tt')
    "$($_.Name) $($_.FullName) $time"
} | out-file output.txt -Encoding utf8

运行后输出的每一行就是单个文件的三项信息,没有默认的Mode、Length等无关列,也没有列名表头。

方案2:保留格式化能力、关闭冗余表头

如果需要自动对齐的排版效果,可以在格式化命令里直接指定需要的属性、隐藏表头,不需要额外拼接字符串:

gci -r | Select-Object Name, FullName, LastWriteTime | ft -Wrap -HideTableHeaders | out-file output.txt -Encoding utf8

注意:必须通过Select-Object限定需要输出的属性范围,否则格式化命令会自动带上Mode、Length等无关列,和你要排除的默认表头内容重合。

常见使用提醒
  • 不要在管道处理链路中使用Write-Host生成待写入文件的内容,它仅适用于控制台即时日志输出,无法参与管道传递、文件写入流程。
  • 写入文件时指定-Encoding utf8参数,避免包含中文的文件名出现乱码。

内容的提问来源于stack exchange,提问作者Sadam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.30 21:57:03