You need to enable JavaScript to run this app. 如何用PowerShell将CSV文件内多条base64内容批量转成图片
优惠活动
大模型
产品
解决方案
定价
更多

如何用PowerShell将CSV文件内多条base64内容批量转成图片

问题原因分析

你的代码核心问题是没有正确逐行读取CSV的每条记录,而是直接操作了整个CSV对象的属性集合:

  • 导入CSV后$csv是包含所有行的数组,直接调用$csv.filename会返回所有行的文件名组成的数组,拼接成路径就会出现所有文件名堆在一起的问题
  • 你遍历的是$csv.documentbody, $csv.filename两个独立的数组,没有把单条base64和对应文件名绑定,自然无法逐行匹配处理
修复后的代码
# 导入CSV,指定分隔符为~
$csv = Import-Csv C:\Users\Desktop\Pictures.csv -Delimiter "~"

# 直接遍历CSV的每一行记录
$csv | ForEach-Object {
    # $_代表当前循环的单条行记录
    $picname = $_.filename
    $b64 = $_.documentbody
    $filename = "C:\Users\Desktop\$picname"

    $bytes = [Convert]::FromBase64String($b64)
    [IO.File]::WriteAllBytes($filename, $bytes)
}
可选优化(增加错误兼容)

如果需要避免个别base64格式错误或字段缺失导致整个脚本终止,可以增加异常捕获逻辑:

$csv = Import-Csv C:\Users\Desktop\Pictures.csv -Delimiter "~"

$csv | ForEach-Object {
    try {
        $picname = $_.filename
        $b64 = $_.documentbody
        $filename = "C:\Users\Desktop\$picname"
        $bytes = [Convert]::FromBase64String($b64)
        [IO.File]::WriteAllBytes($filename, $bytes)
        Write-Host "生成成功:$filename"
    } catch {
        Write-Host "处理失败,对应文件名:$picname,错误信息:$_"
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 06:06:06