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

如何在PowerShell中动态列出目录文件并为其编号

动态生成SQL查询脚本选择菜单的PowerShell实现

以下是适配你需求的代码,能自动读取Individual queries目录下的所有.sql文件并生成带编号的选择菜单,完全不用硬编码:

# 定义SQL查询脚本所在的子目录(基于主脚本位置自动拼接)
$queryDir = Join-Path -Path $PSScriptRoot -ChildPath "Individual queries"

# 获取目录下所有.sql文件,按文件名排序保证菜单顺序稳定
$sqlFiles = Get-ChildItem -Path $queryDir -Filter "*.sql" | Sort-Object Name

# 输出菜单标题和分隔线
Write-Host "Individual Scripts"
Write-Host "******************`n"

# 遍历文件生成带编号的菜单
for ($i = 0; $i -lt $sqlFiles.Count; $i++) {
    Write-Host "$($i + 1). $($sqlFiles[$i].Name)"
}

# 获取并验证用户选择
do {
    $selectedNum = Read-Host "`n请输入要执行的脚本编号"
    # 检查输入是否是有效数字且在菜单范围内
    if ($selectedNum -match '^\d+$' -and [int]$selectedNum -in 1..$sqlFiles.Count) {
        break
    }
    Write-Host "输入无效,请输入1到$($sqlFiles.Count)之间的数字"
} while ($true)

# 获取选中的脚本文件
$selectedScript = $sqlFiles[[int]$selectedNum - 1]

# 执行你的SQL查询逻辑(替换成你已测试好的执行代码)
Write-Host "`n正在执行脚本: $($selectedScript.Name)"
# 示例:读取脚本内容(根据你的实际执行逻辑调整)
$queryContent = Get-Content -Path $selectedScript.FullName -Raw
# 这里调用你的SQL执行方法,比如:
# Invoke-SqlCmd -Query $queryContent -ServerInstance "你的SQL服务器地址" -Database "目标数据库"

核心逻辑说明

  • 动态适配脚本增删:用Get-ChildItem自动扫描目标目录,不管后续加新脚本还是删旧脚本,菜单都会实时更新,不用改主脚本代码。
  • 稳定的菜单顺序:通过Sort-Object Name按文件名排序,避免文件列表乱序导致菜单编号混乱。
  • 输入合法性校验:用do-while循环强制用户输入有效编号,防止非法输入引发脚本错误。
  • 路径可移植性:用$PSScriptRoot获取主脚本所在目录,自动拼接子目录路径,把整个项目文件夹移到其他电脑也能正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 15:15:37