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

如何将Get-ChildItem结果存入变量?PowerShell脚本开发求助

解决PowerShell脚本统计并打开C盘根目录.txt文件的问题

原脚本存在的问题

  • 循环条件中$1是笔误,应为$i,且循环逻辑无意义,无需反复获取文件列表
  • 重复调用Get-ChildItem浪费资源,应一次性获取文件列表并存入变量
  • 未正确使用存储文件名的数组$c,且objListBox未定义(控制台场景无需GUI控件)

修正后的完整脚本

# 一次性获取C盘根目录下所有.txt文件的完整对象(包含路径、名称等信息)
$txtFiles = Get-ChildItem -Path C:\ -Filter *.txt -File

# 统计文件数量,直接使用数组的Count属性
$fileCount = $txtFiles.Count
Write-Host "C盘根目录下共有 $fileCount 个.txt文件"

if ($fileCount -gt 0) {
    # 带序号显示文件列表
    Write-Host "`n可用文件列表:"
    for ($i = 0; $i -lt $fileCount; $i++) {
        Write-Host "$($i+1). $($txtFiles[$i].Name)"
    }

    # 获取用户选择并处理
    $choice = Read-Host "`n请输入要打开的文件序号(输入0退出)"
    if ($choice -match '^\d+$' -and [int]$choice -ge 1 -and [int]$choice -le $fileCount) {
        $selectedFile = $txtFiles[[int]$choice - 1]
        Write-Host "正在打开 $($selectedFile.FullName)..."
        Start-Process -FilePath $selectedFile.FullName
    } elseif ($choice -eq '0') {
        Write-Host "已退出"
    } else {
        Write-Host "输入无效,请输入正确的序号"
    }
} else {
    Write-Host "C盘根目录下没有找到.txt文件"
}

关键说明

  1. 存储文件列表:用$txtFiles = Get-ChildItem ...一次性获取所有.txt文件的完整对象,数组中的每个元素包含文件的FullName(完整路径)、Name(文件名)等属性,方便后续操作
  2. 统计数量:直接使用数组的Count属性,比Measure-Object更高效
  3. 选择打开逻辑:通过循环显示带序号的文件列表,用户输入序号后,通过数组索引定位到对应的文件,用Start-Process打开

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 20:10:45