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

使用gh issue list导出CSV时遇.number命令未识别错误求助

解决Windows CMD/批处理导出GitHub Issues为CSV的命令错误

问题根源

你的命令是基于Unix Shell(如Bash)语法编写的,直接在Windows CMD或批处理文件中执行时,会因为语法不兼容触发错误:

  • CMD会错误解析JQ脚本中的.number等语法,将其识别为外部命令
  • 行尾的^续行符在CMD中需要严格无空格,且易引发解析混乱
  • $(date)是Unix的命令替换语法,CMD不支持

解决方案

推荐两种可靠的修正方式:

方式1:将JQ过滤逻辑保存为单独文件(最稳妥)

  1. 创建filter.jq文件,写入以下内容:
["number","title","assignees","state","labels","url"],
(.[] | [.number, .title,
        (.assignees | if length==0 then "Unassigned" else map(.login)|join(",") end),
        .state,
        (.labels | map(.name)|join(",")),
        .url
       ]
) | @csv
  1. 在CMD或批处理文件中执行以下命令:
:: 生成标准化日期格式(避免依赖系统区域设置)
for /f "delims=" %%d in ('powershell -Command "(Get-Date).ToString('yyyy-MM-dd')"') do set "today=%%d"

:: 导出Issues到CSV
gh issue list --limit 10000 --state all --json number,title,assignees,state,labels,url | jq -r -f filter.jq > issues-%today%.csv

方式2:直接在CMD中转义特殊字符(无需额外文件)

如果不想创建JQ文件,可将JQ脚本中的双引号用""转义(CMD中双引号内部的双引号需用两个双引号表示),同时替换日期生成逻辑:

for /f "delims=" %%d in ('powershell -Command "(Get-Date).ToString('yyyy-MM-dd')"') do set "today=%%d"

gh issue list --limit 10000 --state all --json number,title,assignees,state,labels,url | jq -r "[""number"",""title"",""assignees"",""state"",""labels"",""url""], (.[] | [.number, .title, (.assignees | if length==0 then ""Unassigned"" else map(.login)|join("","") end), .state, (.labels | map(.name)|join("","")), .url]) | @csv" > issues-%today%.csv

关键修改点说明

  • 分离JQ逻辑:避免CMD对JQ脚本中的括号、引号等特殊字符进行错误解析
  • 替换日期生成:用PowerShell生成yyyy-MM-dd格式的日期,替代Unix的$(date),同时避免依赖CMD的%date%变量(格式受系统区域影响)
  • 转义双引号:CMD中双引号字符串内部的双引号必须用""转义,否则会提前终止字符串解析

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 11:16:26