You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell实现文件夹内文件前两行输出时文件名仅作一次标题

问题:批量提取.4th文件前两行并以文件名作为标题

我希望打印文件夹中每个.4th文件的前两行,并将文件名作为标题。当前使用的PowerShell代码如下:

Get-ChildItem *.4th | % {$filename = $_.Name 
( $_| Get-Content -First 2) |
% { "{0}`r`n{1}`r`n" -f $filename, $_ }} 

该代码可运行,但会将文件的两行作为独立项处理,导致文件名重复显示,示例输出如下:

zigzag.4th
\ Taken from xxxxx 

zigzag.4th
\ 4tH version 2010, xxx

想要实现的效果是每个文件名仅显示一次,下方紧跟对应文件的前两行,即:

zigzag.4th
\ Taken from xxxxx 
\ 4tH version 2010, xxx

解决方案

问题出在嵌套的ForEach-Object循环:内层循环会对文件的每一行都拼接一次文件名和行内容,导致文件名重复输出。调整逻辑,对每个文件先单独输出文件名,再直接返回前两行内容即可:

Get-ChildItem *.4th | ForEach-Object {
    # 输出当前文件名作为标题
    $_.Name
    # 输出该文件的前两行内容
    Get-Content $_.FullName -First 2
    # 可选:在不同文件的输出之间添加空行分隔
    ""
}

说明

  • 外层循环遍历所有.4th文件,对每个文件先输出一次文件名;
  • 接着用Get-Content -First 2直接提取并输出该文件的前两行;
  • 最后一行的""用于在不同文件的输出之间添加空行,让结果更易读,不需要的话可以删掉。

内容的提问来源于stack exchange,提问作者Antoni Gual Via

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 03:27:43